我一直在使用 java.mageio.stream api 将 gif 图像作为 ImageInputStream 读取。有没有一种方法可以“手动”解析该流,以便找到图像描述符块开头的索引位置?根据 Gif 文档,图像分隔符 - 标识图像描述符的开头,固定值 0x2C。我一直在读取流的每个字节并将其与“0x2c”值相匹配,但显然这是不正确的,因为存在超过一个字节值的“属性”。我正在尝试手动执行此操作,因为此时我试图避免加载整个图像。任何想法都会受到欢迎。提前致谢
问问题
223 次
1 回答
1
只是为了提供一个答案,所以我们可以将其标记为已回答:
在 Java 中从 GIF 图像描述符获取数据的最简单方法是使用 ImageIO,而不是手动解析 GIF 结构。
对于图像宽度和高度等简单值,您可以使用相应的方法,ImageReader
如下所示:
ImageInputStream stream = ImageIO.createImageInputStream(gif); // gif is File or InputStream
ImageReader reader = ImageIO.getImageReaders(stream).next();
reader.setInput(stream);
int w = reader.getWidth(0);
int h = reader.getHeight(0);
有关 GIF 的更多信息,您可以使用:
IIOMetadata metadata = reader.getImageMetadata(0);
于 2013-11-05T14:04:42.340 回答