当前位置: 首页 > 面试题库 >

如何在Java中将Image转换为BufferedImage?

蒙墨竹
2023-03-14
问题内容

如何在Java中转换ImageBufferedImage

请注意,现有答案显然是不正确的,因为它使用方法getWidth(null)getHeight(null)-1如果尚未加载图像(Image根据定义,它是一个异步对象),则可以返回。

请提供更正确的答案,或提供更多证明现有答案已经正确的证据。


问题答案:

如果这对您很重要,则可以使用MediaTracker“等待”来加载图像,然后就不必担心提供ImageObserver

try {
    MediaTracker mt = new MediaTracker(new JPanel());
    Image image = Toolkit.getDefaultToolkit().createImage("...");
    mt.addImage(image, 0);
    System.out.println("Wait for...");
    mt.waitForAll();
    System.out.println("I be loaded");

    BufferedImage bi = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = bi.createGraphics();
    g2d.drawImage(image, 0, 0, null);
    g2d.dispose();
} catch (InterruptedException ex) {
    ex.printStackTrace();
}

看看MediaTrackerJavaDocs了解更多详细信息

我不想添加任何GUI,我只需要下载图像或失败

好吧,如果您“需要下载”该图像,则可以使用ImageIO.read(URL),请参阅阅读/加载图像以获取更多详细信息…然后,您无需关心ImageMediaTracker,因为ImageIO返回的是BufferedImage



 类似资料:
  • 问题内容: 可能是重复的,但我面临将图像转换成用于发送的问题。我已经尝试过此代码,但是它给了我错误的编码字符串。 输出: [B @ 677327b6 但我将同一张图像转换为许多在线编码器,它们都给出了正确的大Base64字符串。 编辑: 如何重复?我的重复的链接没有给我解决方案转换字符串我想要的。 我在这里想念什么? 问题答案: 问题是您要返回的调用将返回一个字节数组。因此,最后得到的是字节数组的

  • 问题内容: 在Java SE中将原始字节数组转换为Image的正确方法是什么。数组由字节组成,其中每个三个字节代表一个像素,每个字节对应相应的RGB分量。 有人可以建议一个代码示例吗? 谢谢,迈克 问题答案: 假设您知道图像的高度和宽度。 大致。假设像素数据被编码为一组行;并且颜色的长度为3 宽度高度(应该是有效的)。

  • 问题内容: 我正在开发通过与服务器进行通讯的移动应用。这是我第一次使用PHP。我设法将数据上传到数据库中。现在,我需要发送图像以将其存储在ftp服务器中。为此,我转换并从我的应用程序发送。 服务器端 我得到了十六进制代码,但不确定如何将其转换为图像并存储在ftp服务器中。我在这里真的很挣扎。我用谷歌搜索,但找不到确切的一个。 任何帮助深表感谢。 问题答案: 将十六进制字符串转换为二进制: 等价于,

  • 问题内容: 我有一个图像通过JSON字符串发送给我。我想将该字符串转换为我的Android应用程序中的图像,然后显示该图像。 JSON字符串如下所示: 注意:我用…截断了字符串。 我有一个函数(我认为)可以将字符串转换为图像。我这样做对吗? 然后我尝试像这样在我的android活动上显示它 但是,当我这样做时,什么也没有显示。我在logcat中没有任何错误。我究竟做错了什么? 谢谢 问题答案: 我

  • 问题内容: 我试图将一个PIL 对象转换为缩略图,然后将我的缩略图函数返回的PIL 对象转换为一个对象。我怎样才能做到这一点? 问题答案: 无需写回文件系统,然后通过打开调用将文件带回内存的方法是利用StringIO和Django InMemoryUploadedFile。这是有关如何执行此操作的快速示例。假设您已经有一个名为“ thumb”的缩略图: 让我知道是否需要进一步说明。我现在正在我的项

  • 问题内容: 我是Java的新手,想知道double转换为int cast如何工作吗?我知道,只需将低32位转换为int就很容易了,但是将double(64位)转换为int(32位)呢?来自二进制的double中的那64位是Double- precision浮点格式(Mantissa),那么它如何在内部转换为int? 问题答案: 所有这些都记录在JLS的5.1.3节中。 第一步,将浮点数转换为lon