在Java中查找剪贴板图像的格式
我使用以下方法从剪贴板获取图像:在Java中查找剪贴板图像的格式,java,image,clipboard,image-formats,Java,Image,Clipboard,Image Formats,我使用以下方法从剪贴板获取图像: if(Toolkit.getDefaultToolkit().getSystemClipboard().isDataFlavorAvailable(DataFlavor.imageFlavor)){ ImageIcon IMG = new ImageIcon((BufferedImage) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.imageFlavor)
if(Toolkit.getDefaultToolkit().getSystemClipboard().isDataFlavorAvailable(DataFlavor.imageFlavor)){
ImageIcon IMG = new ImageIcon((BufferedImage) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.imageFlavor));
}
现在我想用ImageIO.write将这个图像保存在磁盘上
如何在ImageIO.write
中找到要使用的图像格式(JPG、PNG、GIF等)作为formatName
感谢通过检查剪贴板内容的mime类型
.isDataFlavorAvailable(DataFlavor.imageFlavor)
是(但是)
我找到了两种从剪贴板获取图像并将其写入文件的方法:
使用在此博客文章中找到的帮助器方法:
getBuffereImage
方法如下所示:
public static BufferedImage getBufferedImage(Image img) {
if (img == null) {
return null;
}
int w = img.getWidth(null);
int h = img.getHeight(null);
// draw original image to thumbnail image object and
// scale it to the new size on-the-fly
BufferedImage bufimg = new BufferedImage(w, h,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = bufimg.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(img, 0, 0, w, h, null);
g2.dispose();
return bufimg;
}
通过可转让。请注意,这在OS X上运行,但会生成正确大小的空映像:
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard()
Transferable content =
clip.getContents(null);
BufferedImage img = (BufferedImage) content.getTransferData(
DataFlavor.imageFlavor);
ImageIO.write(img, "png", new File("/tmp/test.png"));
可能会有帮助。@Gus:不幸的是,当图像来自剪贴板时,这不起作用;ImageIO.getImageReaders(imageIconObject)
返回一个空迭代器!简言之,这根本不可能。从剪贴板检索图像时,图像的格式为java.awt.image
。这是Java对图像数据的表示,完全独立于该数据来自的任何图像文件的原始格式。您可以选择任何格式将映像写入磁盘。
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard()
Transferable content =
clip.getContents(null);
BufferedImage img = (BufferedImage) content.getTransferData(
DataFlavor.imageFlavor);
ImageIO.write(img, "png", new File("/tmp/test.png"));