【发布时间】:2016-10-01 02:54:23
【问题描述】:
我在网上到处搜索,但找不到有关如何使用 Java 将 sRGB 或 Abobe (1998) 颜色配置文件添加到 Tiff 图像的解决方案。有一些用于 jpg 和 png 的示例,但它们不适用于 tiff。我一直在尝试使用 Commons Imaging 和 java.awt 来做这件事,但没有任何运气。有可能吗?
谢谢
更新:
我使用 TwelveMonkeys imageio-tiff 库和以下代码取得了一些进展:
File file = new File("/Users/user/Desktop/demo/sandal.tif");
BufferedImage image = ImageIO.read(file);
ICC_Profile ip = ICC_Profile.getInstance("/Users/user/Documents/icc/AdobeRGB1998.icc");
ICC_ColorSpace ics = new ICC_ColorSpace( ip );
ColorConvertOp cco = new ColorConvertOp( ics, null );
BufferedImage result = cco.filter(image, null);
ImageIO.write(result, "TIFF", new File("/Users/user/Desktop/demo/sandal2.tif"));
应用了颜色配置文件,但 tiff 被展平并且 alpha 被移除。 alpha通道如何保存?
【问题讨论】:
-
我试过了,但没有用。要么是因为它不完整,要么它不适用于 Tiffs。
-
@jonD02 目前,TwelveMonkeys
TIFFImageWriter将写入正在使用的 ICC 配置文件,除非该配置文件是 sRGB 配置文件(如ColorSpace.isCS_sRGB())。这假设默认的 TIFF 颜色空间是 sRGB,这可能不是一个正确的假设。但它应该适用于 AdobeRGB1998。您可以从示例代码中链接sandal.tif文件吗?如果是这样,我将尝试重现该问题并提出解决方案。 -
PS:刚刚尝试了您的代码(稍作修改,因为我没有您的文件,显然),我得到了一个很好的 TIFF 文件,其中保留了 alpha 并嵌入了 ICC 配置文件。在 Windows 上使用 bot Java 1.8 和在 macOS 上使用 Java 1.7,最新的 TwelveMonkeys 由 master 构建。在 ColorSync 实用程序中验证。
-
@haraldK 感谢您的回复!我很喜欢你的图书馆。我不确定如何使用 TiffImageWriter,你能提供一个演示吗?这是文件的链接:drive.google.com/file/d/0B8FrShLAYpOEX25vU2NKM2xfNTA/…
标签: java color-profile twelvemonkeys