gpt4 book ai didi

java - 读取图像文件时保持编码

转载 作者:行者123 更新时间:2023-12-01 13:48:02 24 4
gpt4 key购买 nike

我当前正在阅读一个包含元数据和 tiff 图像的文件,如下所示:

private String readFile( String file ) throws IOException {
File file = new File(filename);
int size = (int) file.length();
byte[] bytes = new byte[size];
BufferedInputStream buf = new BufferedInputStream(new FileInputStream(file));
buf.read(bytes, 0, bytes.length);
buf.close();
...
}

我解析元数据+图像内容,然后尝试像这样输出tiff,其中img是一个字符串:

    writer = new BufferedWriter( new FileWriter( "img.tiff"));
writer.write(img);
writer.close();

为什么 tiff 图像文件的编码丢失?

最佳答案

为什么要尝试重写该文件?如果答案是“我正在尝试更改文件中的一些元数据”。我强烈建议您使用一组专门用于处理 TIFF 元数据的工具,特别是如果您打算操作/更改元数据,因为 TIFF 文件中有几个特殊情况的数据元素,它们确实不喜欢被移动愉快地。

我的日常工作涉及了解 TIFF 规范,因此当我看到人们在没有先查阅规范或不关心一些奇怪的特殊情况的情况下就对 TIFF 的内部进行研究时,我总是感到有点坐立不安。存在于野外,现在需要处理,因为其他人没有完全理解规范并创建了一个商业产品,产生了数千只这样的野兽(我正在看 Microsoft 制作“旧式 JPEG 压缩”TIFF,但我也看到过一种 Java 产品,它定义了一种图像类型,该图像使用 float 作为组件值,而无需费心 (1) 将它们规范化为规范会让你这样做或(2)有一个标准来定义组件值的预期最小值和最大值)。

my code base (这是一个商业产品),你可以像这样完成你的工作:

TiffFile myTiff = new TiffFile();
myTiff.read(someImageInputStream);

for (TiffDirectory dir : myTiff.getImages())
{
// a TiffDirectory contains a collection of TiffTag objects, from which the
// metadata for each image in the document can be read/edited
// TiffTag definitions can be found [here][2].
}
myTiff.save(someImageOutputStream); // writes the whole TIFF back

总的来说,我们发现真正想要这样做的是高级客户。在大多数情况下,我们发现客户更关心更高级别的操作,例如将 TIFF 文件组合成单个文档或提取页面,为此我们有一个不同的 API,它的重量要轻得多,并且不需要您了解TIFF 规范(应该如此)。

关于java - 读取图像文件时保持编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20197894/

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