java:复制图片到系统剪切板 然后怎么以图片文件的形式粘贴至本机

java:复制图片到系统剪切板 然后如何以图片文件的形式粘贴至本机?
本帖最后由 u013531487 于 2014-07-16 22:56:44 编辑
代码列在下边 问题是:
我先获取了待保存的图片数据,保存在BufferedImage image中,然后调用setClipboardImage()保存到系统剪切板中,那么再如何将剪切板中的图片数据以png或JPG形式保存到本机上(D盘)呢?
是不是在保存到剪切板之前就要形成文件,如果是这样 这个png文件又该如何保存到本机上呢?
由于这里是做的applet开发 不能直接访问本机的文件系统 所以只能先将图片数据保存到剪切板,再尝试保存到本机文件中


Dimension Size = canvas.getSize();
         BufferedImage image = new BufferedImage(Size.width, Size.height, BufferedImage.TYPE_INT_ARGB);
         Graphics2D g2 = (Graphics2D) image.getGraphics();
         canvas.paint(g2);
            g2.dispose();
            
            /*File file = new File("default.png");
            try{
             ImageIO.write(image, "png", file);
            }catch (Exception ex){
                System.out.println(ex); 
            }*/
            
            setClipboardImage(image);

public void setClipboardImage(final Image image)
{
        Transferable trans = new Transferable(){
@Override
public Object getTransferData(DataFlavor flavor)
throws UnsupportedFlavorException, IOException {
// TODO Auto-generated method stub
if (isDataFlavorSupported(flavor))
{
return image;
}                      
                throw new UnsupportedFlavorException(flavor);
}

@Override
public DataFlavor[] getTransferDataFlavors() {
// TODO Auto-generated method stub
return new DataFlavor[] { DataFlavor.imageFlavor };
}

@Override
public boolean isDataFlavorSupported(DataFlavor flavor) {
// TODO Auto-generated method stub
return DataFlavor.imageFlavor.equals(flavor);
}          
        };
        
        getToolkit().getSystemClipboard().setContents(trans, null);
}

------解决方案--------------------
既然不能访问本地文件系统,那就应该让用户来操作啊,比如告诉用户自行将剪切板里的图片保存到本地,或者提示用户自行点击复制图片
------解决方案--------------------
outputstream 试试
操作文件系统杀毒软件这里有麻烦
还是提示用户自己操作比较好
搞个问号,然后提示
------解决方案--------------------
引用:
outputstream 试试
操作文件系统杀毒软件这里有麻烦
还是提示用户自己操作比较好
搞个问号,然后提示

这个有感触,杀毒软件确实有这毛病,楼主还是重新设计下思路为好。