gpt4 book ai didi

用于奇数图像类型的 Java JPEG 转换器

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:28 24 4
gpt4 key购买 nike

我有一个程序可以使用 mortennobel 图像库来重新缩放图像以用于重新缩放过滤器/算法。我正在使用 Java 标准库 ImageIO 将文件读入 BufferedImage 对象。然而,我遇到的问题是 ImageIO 库只接受标准形式的图像,所以如果 ImageIO.read() 函数抛出 IOException 我想捕获它并将图像转换为标准格式,例如 JPEG。

澄清一下,我遇到的问题是一些图像不是标准的 JPEG 格式,即 FF D8 FF E0 JFIF,而是由数码相机或在 photoshop 中编辑,格式为 FF D8 FF E1 Exif。可以通过将图像加载到像画图这样的程序中并再次保存为 JPEG 来更改此格式,但这对我的情况来说并不理想,因为我希望它是自动化的。

转换自:FF D8 FF E1 ExifFF D8 FF E0 JFIF

最佳答案

FFE0 标记后的第一个字段是长度字段。它是 16 位长的 big endian,包括长度字段的长度,但不包括 FFE0 标记。只需从现有 jpeg 复制 FFE0 标记和相关数据,并将其放入 FFD8 和 FFE1 之间。

根据JFIF标准,JFIF头应该紧跟在SOI(FFD8)之后。每个没有 JFIF header 的 jpeg 基本上都是坏的,因为无法知道使用了什么颜色编码。当然还有 Adob​​e jpeg,但它们并不重要。如果有 JFIF header ,您就知道图像是用 YCbCr 编码的。如果没有 JFIF header ,您可能会认为它是 YCbCr,但您不能确定。

您可以在此处阅读有关 JFIF 标准的更多信息:http://www.w3.org/Graphics/JPEG/jfif3.pdf

关于用于奇数图像类型的 Java JPEG 转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7676701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com