我试图复制一个图像(保存在一个BufferedImage对象)到剪贴板。 我正在使用这个答案的代码。
当试图在程序中粘贴图像时,没有任何反应。 GIMP显示一条消息,指出在剪贴板中没有find图像数据。
我也尝试了这篇文章的解决方法。 实际上,我改变了这个构造函数:
Robot robot = new Robot(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Rectangle screen = new Rectangle( screenSize ); BufferedImage i = robot.createScreenCapture( screen ); // ----- start of changes from workaround ----- // Work around a Sun BUG that causes a hang in "sun.awt.image.ImageRepresentation.reconstruct". new javax.swing.ImageIcon(i); // Force load. BufferedImage newImage = new BufferedImage(i.getWIDth(null),i.getHeight(null),BufferedImage.TYPE_INT_ARGB); newImage.createGraphics().drawImage(i,null); i = newImage; // ----- end of changes from workaround ----- TransferableImage trans = new TransferableImage( i ); Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); c.setContents( trans,this );
这不会使其工作,但它会改变行为:每当我尝试粘贴 ,我的程序在控制台中显示以下exception:
如何检索剪贴板文件指针CF_HDROP
当我们处理撤销(`ctrl + z`)时,从哪里复制值?
如何使用C#将CSV数据粘贴到windows剪贴板
从资源pipe理器复制文件的详细信息作为表格文本
无法快速将文件复制到linux计算机中的剪贴板
javax.imageio.IIOException: InvalID argument to native writeImage at com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeImage(Native Method) at com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeOnThread(JPEGImageWriter.java:1055) at com.sun.imageio.plugins.jpeg.JPEGImageWriter.write(JPEGImageWriter.java:357) at javax.imageio.ImageWriter.write(ImageWriter.java:615) at sun.awt.datatransfer.DataTransferer.imagetoStandardBytesImpl(DataTransferer.java:2107) at sun.awt.datatransfer.DataTransferer.imagetoStandardBytes(DataTransferer.java:2037) at sun.awt.X11.XDataTransferer.imagetoPlatformBytes(XDataTransferer.java:165) at sun.awt.datatransfer.DataTransferer.translateTransferable(DataTransferer.java:1277) at sun.awt.datatransfer.DataTransferer$6.run(DataTransferer.java:2208) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:647) at java.awt.EventQueue.access$000(EventQueue.java:96) at java.awt.EventQueue$1.run(EventQueue.java:608) at java.awt.EventQueue$1.run(EventQueue.java:606) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105) at java.awt.EventQueue.dispatchEvent(EventQueue.java:617) at java.awt.EventdispatchThread.pumpOneEventForFilters(EventdispatchThread.java:275) at java.awt.EventdispatchThread.pumpEventsForFilter(EventdispatchThread.java:200) at java.awt.EventdispatchThread.pumpEventsForHIErarchy(EventdispatchThread.java:190) at java.awt.EventdispatchThread.pumpEvents(EventdispatchThread.java:185) at java.awt.EventdispatchThread.pumpEvents(EventdispatchThread.java:177) at java.awt.EventdispatchThread.run(EventdispatchThread.java:138)
我在Ubuntu 11.10 x64上尝试粘贴各种程序,其中有libreOffice Draw,libreOffice Writer,GIMP,InkScape。
mw@nb999:~$ java -version java version "1.6.0_23" OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.2) OpenJDK 64-Bit Server VM (build 20.0-b11,mixed mode)
有没有人遇到同样的麻烦? 我做错了什么,是Java错误,有没有解决方法?
编辑:我现在使用一个相当肮脏的解决方法。 我拿了一个我在stackoverflow上find的小Python脚本,把这个Image写到Java文件中,然后把这个文件传给这个脚本,把它复制到剪贴板。 当然,这只是平台独立的一切。 所以我仍然希望在Java中有一个解决scheme。
你的,Max Weller
如何获取剪贴板的独占访问权限用于testing目的?
编程多个自定义剪贴板,使用windows剪贴板 – 并发症less
是否在Adobe ExtendScript中阻止windows“剪辑”?
清理私人剪贴板格式
如何通过键盘快捷方式将剪贴板内容与select交换
您可能正在运行OpenJDK,它不支持写入JPEG图像。 您可以尝试切换到Sun / Oracle Java。
总结以上是内存溢出为你收集整理的Java BufferedImage到剪贴板给IIOException全部内容,希望文章能够帮你解决Java BufferedImage到剪贴板给IIOException所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)