【问题标题】:Byte Array to Image object字节数组到图像对象
【发布时间】:2010-12-07 11:50:02
【问题描述】:

我在 Java 中得到一个 byte[] 数组,其中包含图像的字节,我需要将其输出到图像中。我该怎么做呢?

非常感谢

【问题讨论】:

    标签: java arrays image byte


    【解决方案1】:
    BufferedImage img = ImageIO.read(new ByteArrayInputStream(bytes));
    

    【讨论】:

    • 这没有回答问题,问题是写入图像文件。此答案用于从图像文件中读取。所有的赞成票是怎么回事?
    • 标题是这样说的,但问题是他们有一个字节数组并且需要一个图像,这就是它的作用。
    【解决方案2】:

    如果您知道图像的类型并且只想生成文件,则无需获取 BufferedImage 实例。只需将字节写入具有正确扩展名的文件即可。

    try (OutputStream out = new BufferedOutputStream(new FileOutputStream(path))) {
        out.write(bytes);
    }
    

    【讨论】:

      【解决方案3】:
      From Database.
      Blob blob = resultSet.getBlob("pictureBlob");               
      byte [] data = blob.getBytes( 1, ( int ) blob.length() );
      BufferedImage img = null;
      try {
      img = ImageIO.read(new ByteArrayInputStream(data));
      } catch (IOException e) {
          e.printStackTrace();
      }
      drawPicture(img);  //  void drawPicture(Image img);
      

      【讨论】:

        【解决方案4】:

        因为听起来您已经知道 byte[] 数组的格式(例如 RGB、ARGB、BGR 等),您可能可以使用BufferedImage.setRGB(...),或BufferedImage.getRaster()WritableRaster.setPixels(...) 的组合或WritableRaster.setSamples(...)。不幸的是,这两种方法都需要您将 byte[] 转换为 int[]、float[] 或 double[] 之一,具体取决于图像格式。

        【讨论】:

          【解决方案5】:

          根据 Java 文档,看起来您需要使用 the MemoryImageSource Class 将字节数组放入内存中的对象中,然后接下来使用 Component.createImage(ImageProducer) (传入实现 ImageProducer 的 MemoryImageSource) .

          【讨论】:

            猜你喜欢
            • 2012-07-28
            • 1970-01-01
            • 2019-05-09
            • 2012-05-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-15
            • 1970-01-01
            相关资源
            最近更新 更多