- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试将图像(保存在 BufferedImage 对象中)复制到剪贴板。我正在使用 this answer 中的代码.
当试图将图像粘贴到程序中时,什么也没有发生。 GIMP 显示一条消息,指出在剪贴板中未找到图像数据。
我还尝试了 this article 中的解决方法.实际上,我将构造函数更改为:
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, 0, 0, null);
i = newImage;
// ----- end of changes from workaround -----
TransferableImage trans = new TransferableImage( i );
Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
c.setContents( trans, this );
这不会使其工作,但会改变行为:每次我尝试粘贴时,我的程序都会在控制台中显示以下异常:
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 上找到的小 Python 脚本,将图像从 Java 写入文件并将文件提供给该脚本,该脚本将其复制到剪贴板。当然,这与平台无关。所以我仍然希望在 Java 中找到解决方案。
您的,麦克斯韦勒
最佳答案
您可能正在运行 OpenJDK,它不支持写入 JPEG 图像。您可以尝试切换到 Sun/Oracle Java。
关于Java BufferedImage 到剪贴板给出 IIOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9754693/
假设我们在 NoArgConstructorClass.java 文件中有一个类 NoArgConstructorClass /* first example */ import javax.imag
大家好,我遇到了 Java 问题。对于我的高级研究类(class),我已经基本完成,但我只需要分析我生成的图像中的一些数据。我不想将其标记为家庭作业,因为它不是任何必需作业的一部分......这是我自
我正在制作一个菜单,使用 awt.Graphics,当它绘制出图片时给我一个奇怪的 IIOException。是因为程序没有找到图像吗?以下是我的代码的使用方式。 public static Buff
我正在尝试将 Image 设置为 JLabel。我使用了这段代码,它在 IDE 中运行良好。但是当我尝试在 dist 文件夹中运行可执行 Jar 文件时,它给了我这个错误。 javax.imageio
我正在尝试将图像(保存在 BufferedImage 对象中)复制到剪贴板。我正在使用 this answer 中的代码. 当试图将图像粘贴到程序中时,什么也没有发生。 GIMP 显示一条消息,指出在
我正在尝试使用 swing 将图像指定为背景。我找到了多种方法来做到这一点,但我似乎总是遇到同样的问题。我找到了一个很好的自定义类可以在这里使用 > http://www.camick.com/jav
我正在使用数据驱动设计编写一个简单的游戏,在其中我读取游戏各个元素的图像。因此,我编写了一个解析器来读入文件,确认它们是可接受的图像格式,并使用这些文件创建一个新的 Sprite(我编写的类)。 我使
谁能帮我解决如何捕获 IOException 和 IIOException,因为我需要区分图像格式和图像加载错误。 因为我没有捕捉到 IOException,所以这样的事情不起作用。 catch (I
我正在尝试获取“图像”文件夹中所有图像的高度和宽度。不幸的是,我不断收到“无法创建 ImageInputStream!”错误。我该如何解决? javax.imageio.IIOException: C
我正在用 java 实现一个服务器,它从 android 应用程序接收图像。基本上它是从 android 模拟器而不是从 android 设备接收图像。从 Android 模拟器或 Android 设
我有一个函数generateImageOutput,可以将BufferedImage写入jpeg文件。 public boolean generateImageOutput(BufferedImage
我正在构建一个辅助工具,它将向图像添加一些文本。该镜像与 .jar 文件位于同一目录中。我只想将文件复制到 jar 的目录中,然后双击 jar 文件,它应该处理图像。 当我在 Eclipse 中运行代
第一次在 Java 中使用图像,并且遇到了一些没有很好记录的奇怪异常。这是失败的代码行: BufferedImage imgSelected = ImageIO.read(new File("/abs
我正在比较存储在项目内 pic 文件夹中的两个图像 在编译期间我收到IOException我尝试了以前的所有解决方案,但仍然不起作用请帮我解决这个错误在此项目中,我使用 servlet 页面 这是我的
我可以打开this image在我的浏览器中,但它不会在我的 java 应用程序中加载,为什么?它应该是一个免费使用的数据库,我不明白为什么我不能使用它。 我正在使用这段代码: public stat
我使用this用于创建图像缩略图的开放源码库。我的任务是将文件转换为 Base64 字符串,然后将此字符串作为请求参数发送到 REST 服务。我使用此函数在客户端将文件转换为 Base64 字符串:
以下代码在 BlueJ IDE 中运行成功,但在 Eclipse 中运行失败。 String path="images/pic1.jpg"; BufferedImage myPicture = nul
protected void doGet(HttpServletRequest req, HttpServletResponse response) throws IOExceptio
这个问题在这里已经有了答案: imageio.IIOException: Can't read input file (4 个答案) 关闭 4 年前。 我正在构建一个压缩给定图像并将其保存为 JPE
我一周前开始使用 Java,现在我想在我的窗口中插入一个图像。无论我尝试什么,我都会在 Eclipse 中保留这个:javax.imageio.IIOException:无法读取输入文件! packa
我是一名优秀的程序员,十分优秀!