我有一个桌面java应用程序从用户剪贴板中获取图像(“粘贴”动作),我需要在进一步处理之前检查它们的mime类型(只允许jpg,png和gif)。
我正在使用此代码从剪贴板中获取图像:
Transferable transferable = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
if (transferable != null && transferable.isDataFlavorSupported(DataFlavor.imageFlavor)) {
try {
Image pastedImage = (Image) transferable.getTransferData(DataFlavor.imageFlavor);
// how to get mime type?
} catch (Exception e) {/*cutted for brevity*/}
}
现在,我知道how to get the mime type from a file using apache Tika并且我尝试将图像写入磁盘以重用此技术,但ImageIO.write
方法也需要格式名称:
BufferedImage bi = convertImageToBI(img);
File outputfile = File.createTempFile("img_", "_upload");
ImageIO.write(bi, "jpg", outputfile);
要将图像转换为BufferedImage,我正在使用this method。唯一的区别是我使用的是TYPE_INT_RGB
而不是TYPE_INT_ARGB
。
如何获取粘贴图像的mime类型?