0

我一直在使用 java.mageio.stream api 将 gif 图像作为 ImageInputStream 读取。有没有一种方法可以“手动”解析该流,以便找到图像描述符块开头的索引位置?根据 Gif 文档,图像分隔符 - 标识图像描述符的开头,固定值 0x2C。我一直在读取流的每个字节并将其与“0x2c”值相匹配,但显然这是不正确的,因为存在超过一个字节值的“属性”。我正在尝试手动执行此操作,因为此时我试图避免加载整个图像。任何想法都会受到欢迎。提前致谢

4

1 回答 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);

对于原生元数据格式,请参阅GIF 元数据,对于标准(格式中立)元数据格式,请参阅标准元数据

于 2013-11-05T14:04:42.340 回答