getImageFromClipboard method
Get image data from the clipboard.
Implementation
Future<ImageWithDimensions?> getImageFromClipboard() async {
final commands = _getClipboardCommands();
final tmpDir = Platform.environment['MAGE_TMPDIR'] ?? '/tmp';
final screenshotPath = '$tmpDir/neomage_cli_latest_screenshot.png';
try {
// Check for image
final checkResult = await Process.run('bash', [
'-c',
commands.checkImage,
]);
if (checkResult.exitCode != 0) return null;
// Save image
final saveResult = await Process.run('bash', ['-c', commands.saveImage]);
if (saveResult.exitCode != 0) return null;
// Read image
var imageBuffer = await File(screenshotPath).readAsBytes();
final buffer = Uint8List.fromList(imageBuffer);
// Resize if needed
final resized = await maybeResizeAndDownsampleImageBuffer(
buffer,
buffer.length,
'png',
);
final base64Image = base64Encode(resized.buffer);
final mediaType = detectImageFormatFromBase64(base64Image);
// Cleanup (fire-and-forget)
unawaited(Process.run('bash', ['-c', commands.deleteFile]));
return ImageWithDimensions(
base64: base64Image,
mediaType: mediaType.value,
dimensions: resized.dimensions,
);
} catch (_) {
return null;
}
}