JavaFX 讀取剪切板圖片並保存圖片到本地

JavaFX 讀取剪切板圖片並保存圖片到本地

使用 JavaFX Clipboard API

Clipboard clipboard = Clipboard.getSystemClipboard();
Image image = clipboard.getImage();
BufferedImage bImage = SwingFXUtils.fromFXImage(image, null);
File file = new File("D:/image.png");
ImageIO.write(bImage, "png", file);

QQ 微信 有道雲筆記 win10自帶截圖等 保存後的圖片正常

Snipaste FastStone 截圖, 看圖工具中複製圖片, 保存後的圖片是透明的, 沒有顏色

使用 Awt Clipboard API

Image image = getImageFromClipboard();
File file = new File("D:/image.png");
//轉成jpg
//BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_RGB);
//轉成png
BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics2D g = bufferedImage.createGraphics();
g.drawImage(image, null, null);
//ImageIO.write(bufferedImage, "jpg", file);
ImageIO.write(bufferedImage, "png", file);

public static Image getImageFromClipboard() throws Exception {
    Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard();
    Transferable cc = sysc.getContents(null);
    if (cc == null)
        return null;
    else if (cc.isDataFlavorSupported(DataFlavor.imageFlavor))
        return (Image) cc.getTransferData(DataFlavor.imageFlavor);
    return null;
}

測試的這些軟件都能正常保存

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章