gpt4 book ai didi

.net - 从 TIFF 文件中提取 JPEG

转载 作者:行者123 更新时间:2023-12-04 15:02:56 25 4
gpt4 key购买 nike

背景
我有一个大的 TIFF 文件,它用 JPEG 压缩(新的,TIFF 标准中的压缩 7)并被平铺。我需要做的是将这些图块提取到单独的 .jpg 文件中。我需要能够在不解压缩/重新压缩图像数据的情况下做到这一点,因为这将需要太多的计算资源,所以我知道的所有库都是不可能的。
我对 TIFF 文件结构了解很多,但对 JPEG 文件结构几乎一无所知。我现在编写的代码将 JPEGTable 标记数据从 tiff header 读取到一个字节数组中(意味着它转到标记指向的偏移量并在那里读取它)和另一个将目标 Tile 读入字节的代码简介大批。然后我将 Table 字节数组写入一个新文件,然后将 Tile 字节数组写入该文件。 Table 数组的最后 2 个字节我用 0xFF、0xFF 重写,Tile 数组的前 2 个字节也是如此,因为我发现这两个数组分别以 jpeg SOI 和 EOI 序列开始和结束,如果我有更多超过 1 个,文件将无法被任何图像程序打开。

For i as Integer = 0 to TableArray.Count-3
stream.WriteByte(TableArray(i))
Next
stream.WriteByte(255)
stream.WriteByte(255)
stream.WriteByte(255)
stream.WriteByte(255)
For i as Integer = 2 to TileArray.Count-1
stream.WriteByte(TileArray(i))
Next
stream.Close()
问题
所以这就是我现在所处的位置,问题是我提取的瓷砖都是粉红色的,它应该是白色的,几乎就像一个负色。它不是纯粉红色,我可以在原始图像中看到我知道的对象的轮廓。有没有人知道我如何解决这个问题?另外,我在 VB.NET 中这样做,但我认为在这种情况下语言并不重要,因为它似乎更多是我做错的概念/算法/文件结构问题。
如果有人想让我发布一些我正在使用的代码,我可以,只需要知道是哪一部分。
Extracted
Original
编辑:我在 2002 年 3 月 22 日的 Adob​​e Photoshop TIFF 技术说明中找到了一个部分,内容如下:

Conversion from TIFF to interchange JPEG is more complex. A strip-based TIFF/JPEG file can be converted fairly easily if all strips use identical JPEG tables and no RSTn markers: just delete the overhead markers and insert RSTn markers between strips. Converting tiled images is harder, since the data will usually not be in the right order (unless the tiles are only one MCU high). This can still be done losslessly, but it will require undoing and redoing the entropy coding so that the DC coefficient differences can be updated.


不确定这是否与我的问题有关。

最佳答案

Photoshop 生成的 TIFF 文件的难点在于它们支持将 RGB 色彩空间写入 JPEG 压缩数据。如果您从 TIFF 文件中提取单个图块并将其写入为独立的 JPEG 图像,它将无法正确显示,因为解码器假定色彩空间为 YCbCr。只要查看应用程序遵守 Adob​​e APP14 标记,就有一个解决方案。此标记中包含一个字节,用于定义变换(色彩空间)。如果您在 SOI 之前插入此字节序列,您的图像将在许多查看器上正确显示。

FF EE 00 0E 41 64 6F 62 65 00 64 80 00 00 00 00

最后一个字节定义了变换;在这种情况下,0 表示 RGB 色彩空间。你可以在这里读更多关于它的内容:

Oracle JPEG metadata doc

关于.net - 从 TIFF 文件中提取 JPEG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8747904/

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