byte[]
我的Java 代码中有一个数组格式的图像。我想要从该数组中提取以下信息。我怎样才能尽可能快地做到这一点。
- 宽度
- 高度
- 颜色(黑白,彩色还是透明?如果是彩色,主要颜色是什么?)
- 类型(图像是 PNG、GIF、JPEG 等)
使用 ImageIO 读取缓冲图像,然后获取您想要的相关内容。请参阅http://docs.oracle.com/javase/6/docs/api/javax/imageio/ImageIO.html上的 java 文档。
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
public class Test {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// assuming that picture is your byte array
byte[] picture = new byte[30];
InputStream in = new ByteArrayInputStream(picture);
BufferedImage buf = ImageIO.read(in);
ColorModel model = buf.getColorModel();
int height = buf.getHeight();
}
}
要从字节数组中获取图像类型,您可以执行以下操作:
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
它的灵感来自: