java:复制图片到系统剪切板 然后如何以图片文件的形式粘贴至本机?
本帖最后由 u013531487 于 -07-16 22:56:44 编辑
代码列在下边问题是:
我先获取了待保存的图片数据,保存在BufferedImageimage中,然后调用setClipboardImage()保存到系统剪切板中,那么再如何将剪切板中的图片数据以png或JPG形式保存到本机上(D盘)呢?
是不是在保存到剪切板之前就要形成文件,如果是这样这个png文件又该如何保存到本机上呢?
由于这里是做的applet开发不能直接访问本机的文件系统所以只能先将图片数据保存到剪切板,再尝试保存到本机文件中
DimensionSize=canvas.getSize();
BufferedImageimage=newBufferedImage(Size.width,Size.height,BufferedImage.TYPE_INT_ARGB);
Graphics2Dg2=(Graphics2D)image.getGraphics();
canvas.paint(g2);
g2.dispose();
/*Filefile=newFile("default.png");
try{
ImageIO.write(image,"png",file);
}catch(Exceptionex){
System.out.println(ex);
}*/
setClipboardImage(image);
publicvoidsetClipboardImage(finalImageimage)
{
Transferabletrans=newTransferable(){
@Override
publicObjectgetTransferData(DataFlavorflavor)
throwsUnsupportedFlavorException,IOException{
//TODOAuto-generatedmethodstub
if(isDataFlavorSupported(flavor))
{
returnimage;
}
thrownewUnsupportedFlavorException(flavor);
}
@Override
publicDataFlavor[]getTransferDataFlavors(){
//TODOAuto-generatedmethodstub
returnnewDataFlavor[]{DataFlavor.imageFlavor};
}
@Override
publicbooleanisDataFlavorSupported(DataFlavorflavor){
//TODOAuto-generatedmethodstub
returnDataFlavor.imageFlavor.equals(flavor);
}
};
getToolkit().getSystemClipboard().setContents(trans,null);
}
------解决方案--------------------
既然不能访问本地文件系统,那就应该让用户来操作啊,比如告诉用户自行将剪切板里的图片保存到本地,或者提示用户自行点击复制图片
------解决方案--------------------
outputstream试试
操作文件系统杀毒软件这里有麻烦
还是提示用户自己操作比较好
搞个问号,然后提示
------解决方案--------------------
引用:outputstream试试
操作文件系统杀毒软件这里有麻烦
还是提示用户自己操作比较好
搞个问号,然后提示
这个有感触,杀毒软件确实有这毛病,楼主还是重新设计下思路为好。