java - 使用 Apache Commons-Imaging/Sanselan 更新 Tiff-Metadata

标签 java image image-processing tiff

我将使用 java 修改 Tiff 标签并将其添加到现有的 tif 文件中。 JAI imageio 崩溃了,因为它无法处理来自 Tiff 6.0 的某些标签。 Apache Commons-Imaging 似乎能够处理这些标签。但我不知道如何做到这一点。我在这里找到了一个帖子,我用于开始( How to embed ICC_Profile in TiffOutputSet )。
使用示例代码创建了一个图像,由于 LZW 错误,我无法打开该图像。如果我使用 Imaging.writeImage(...) 方法,它会将颜色模型从 8Bit 更改为 24Bit,并且 Exif 元数据已经消失。

我所做的是:

bufferedImage = Imaging.getBufferedImage(srcTiff);
byte[] imageBytes = Imaging.writeImageToBytes(tifFile, imageFormat, optional_params)
exifDirectory = tiffOutputSet.getOrCreateRootDirectory();
...
TiffImageWriterLossLess lossLessWriter = new TiffImageWriterLossless(imageBytes);
os = new FileOutputStream(tmpFile);
os = new BufferedOutputStream(os);
lossLessWriter.writeImage(bufferedImage, os, image_params);

使用 image_params,例如压缩或将输出集定义为参数,会导致不同的问题。但一个是常数,destImage 比 src 图像大,即使源图像与 dest 图像一样是 24 位。

我怎样才能让 Commons-Imaging 为我工作?

最佳答案

我可以回复 destImage 大源 ,这是因为 TIFF 图像具有在图像读入内存时不会进行的压缩。在将图像写回存储时,您必须显式应用压缩。

关于java - 使用 Apache Commons-Imaging/Sanselan 更新 Tiff-Metadata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23280548/

相关文章:

java - mysql 查询字符串中不支持的字符

jquery - 没有 .jpg 的 Fancybox 网址无法在框中打开

css - 为什么一个简单的图像会得到 margin-bottom c.q.图像下的输出空间?

python - 预测鼠标书写的数字

python - 将照片拼接在一起

java - 每个组件(.xml)都应该有自己的 eclipse 项目吗?

java - 从 MySQL 插入到 jTable 日期

java - SSL 握手异常 :no cipher suites in common

python - 查找图像中极大值的坐标

c++ - 如何将 C++ 结构数组传递给 CUDA 设备?