Java中的图像读取

Java中的图像读取,java,image,file,byte,Java,Image,File,Byte,我试图用下面的代码读取一个图像,我无法理解它为什么会发生。如果在下面的代码中有任何错误,请告诉我 System.out.println("Image Bytes ::"+imageBytes); InputStream in = new ByteArrayInputStream(imageBytes); BufferedImage img = ImageIO.read(in); System.out.println("Buff Image :: "+img); 输出如下: Image By

我试图用下面的代码读取一个图像,我无法理解它为什么会发生。如果在下面的代码中有任何错误,请告诉我

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

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

返回BuffereImage,作为对提供的文件进行解码的结果 从当前图像中自动选择的图像阅读器 注册的。该文件被包装在ImageInputStream中。如果没有 注册的ImageReader声称能够读取结果 流,则返回null

输出(在我的电脑上):

javadoc说:如果没有注册的ImageReader声称能够读取结果流,则返回null。因此,字节数组不包含Java可以解码的图像。这些字节来自哪里?
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);
    }
}
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