Java 提取图像';字节数组中的宽度、高度、颜色和类型

Java 提取图像';字节数组中的宽度、高度、颜色和类型,java,image,Java,Image,我在Java代码中有一个byte[]array格式的图像。我想从该数组中提取以下信息。我怎样才能尽可能快地完成它 宽度 高度 颜色(黑白、彩色或透明?如果是彩色,主要颜色是什么?) 类型(是图像PNG、GIF、JPEG等) 使用ImageIO读取缓冲图像,然后获取所需的相关内容。请参阅java文档 要从字节数组中获取图像类型,可以执行以下操作: byte[] picture = new byte[30]; ImageInputStream iis = ImageIO.createImageIn

我在Java代码中有一个
byte[]
array格式的图像。我想从该数组中提取以下信息。我怎样才能尽可能快地完成它

  • 宽度
  • 高度
  • 颜色(黑白、彩色或透明?如果是彩色,主要颜色是什么?)
  • 类型(是图像PNG、GIF、JPEG等)

使用ImageIO读取缓冲图像,然后获取所需的相关内容。请参阅java文档


要从字节数组中获取图像类型,可以执行以下操作:

byte[] picture = new byte[30];
ImageInputStream iis = ImageIO.createImageInputStream(new ByteArrayInputStream(picture));

Iterator<ImageReader> readers = ImageIO.getImageReaders(iis);
while (readers.hasNext()) {
    ImageReader read = readers.next();
    System.out.println("format name = " + read.getFormatName());
}
它的灵感来自:


仅使用字节数组上的按位操作提取此类信息是一项艰巨的任务。我会使用一些库来实现这一点。创建某种类型的图像(可能使用
ImageIO
)并提取图像properties@Simon我使用库没有任何问题。你能给我一个代码片段吗?我真的很感激。特别是颜色部分。谢谢你的编辑。颜色信息呢?是否可以使用
缓冲图像
?谢谢。请看编辑。ColorModel具有所有与颜色相关的信息。Api文档非常感谢。如果可能的话,请告诉我如何获得
类型
,例如png、jpeg等。
byte[] picture = new byte[30];
ImageInputStream iis = ImageIO.createImageInputStream(new ByteArrayInputStream(picture));

Iterator<ImageReader> readers = ImageIO.getImageReaders(iis);
while (readers.hasNext()) {
    ImageReader read = readers.next();
    System.out.println("format name = " + read.getFormatName());
}
format name = png
format name = JPEG
format name = gif