【问题标题】:Image read in Java用 Java 读取图像
【发布时间】:2015-07-12 16:50:14
【问题描述】:

我正在尝试使用以下代码读取图像,但无法弄清楚它发生的原因。如果我在以下代码中做错了什么,请告诉我。

System.out.println("Image Bytes ::"+imageBytes);

InputStream in = new ByteArrayInputStream(imageBytes);
BufferedImage img = ImageIO.read(in);

System.out.println("Buff Image :: "+img);

输出如下:

Image Bytes ::[B@4554617c
Buff Image :: null

【问题讨论】:

  • javadoc 说:如果没有注册的 ImageReader 声称能够读取结果流,则返回 null。 因此,您的字节数组不包含 Java可以解码。这些字节是从哪里来的?

标签: java image file byte


【解决方案1】:

由于您的 imageByte 的来源未知,因此很难说出了什么问题。但是,如果您正在创建该 byteSource,那么下面的代码可能会对您有所帮助,因为 来自 ImageIO.read() 的 Javadocs

返回一个 BufferedImage 作为解码提供的文件的结果 一个从当前的 ImageReader 中自动选择的 ImageReader 挂号的。该文件被包装在一个 ImageInputStream 中。如果不 注册的 ImageReader 声称能够读取结果 流,返回null。

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;

/**
 * Created by ankur on 13/7/15.
 * The Following program will read an image file.
 * convert it into byte array, and then reuse the
 * converted byte array, and convert it back to new BufferedImage
 *
 */
public class ImageToBuf {

    public  static  void main(String... strings) throws IOException {
        byte[] imageInByte;
        //read the image
        BufferedImage originalImage = ImageIO.read(new File("/home/ankur/Pictures/BlpRb.png"));
        //convert BufferedImage to byte array
        ByteArrayOutputStream byteOutS = new ByteArrayOutputStream();
        ImageIO.write(originalImage, "png", byteOutS);
        byteOutS.flush();
        imageInByte = byteOutS.toByteArray();
        byteOutS.close();

        //convert byte array back to BufferedImage
        InputStream readedImage = new ByteArrayInputStream(imageInByte);
        BufferedImage bfImage = ImageIO.read(readedImage);
        System.out.println(bfImage);
    }
}

OutPut(在我的机器上):

BufferedImage@21b8d17c: type = 13 IndexColorModel: #pixelBits = 8 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@6433a2 transparency = 1 transIndex   = -1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 4959 height = 3505 #numDataElements 1 dataOff[0] = 0

【讨论】:

    猜你喜欢
    • 2018-10-24
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多