首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jpeg中保存色彩空间

在jpeg中保存色彩空间
EN

Stack Overflow用户
提问于 2011-04-08 03:43:12
回答 1查看 672关注 0票数 2

我有一个servlet来转换和缓存较小版本的照片。它是使用java.awt.image + javax.imageio和第三方重采样过滤器实现的。原稿都是通过sRGB颜色配置文件上传的。当我对它们重新采样并再次保存时,它们仍然在sRGB中,但是这并没有记录在保存的文件中。

如何确保此信息保存在文件中?

如果你想知道这有什么不同,没有配置文件的图像在我的屏幕上(Safari + OSX + Calibrated screen)比有正确的sRGB配置文件时更饱和。另外,我确信这是缺少的配置文件信息,而不是重采样算法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-10 02:38:35

事实证明,包含一个告诉它应该作为sRGB处理的EXIF标记ColorSpace=1就足够了。使用Apache Commons Sanselan成功地做到了这一点。不幸的是,这个库并不完整,所以它只能在文件创建后用来修改EXIF。

相关代码,基于Sanselan示例:

代码语言:javascript
复制
public void addExifMetadata(File jpegImageFile, File dst)
            throws IOException, ImageReadException, ImageWriteException {
        OutputStream os = null;
        try {
            TiffOutputSet outputSet = new TiffOutputSet();

            TiffOutputField colorspace = TiffOutputField.create(
                        TiffConstants.EXIF_TAG_COLOR_SPACE, outputSet.byteOrder, new Integer(1));
            TiffOutputDirectory exifDirectory = outputSet.getOrCreateExifDirectory();
            exifDirectory.add(colorspace);

            os = new FileOutputStream(dst);
            os = new BufferedOutputStream(os);
            new ExifRewriter().updateExifMetadataLossless(jpegImageFile, os, outputSet);

            os.close();
            os = null;
        } finally  {
            if (os != null)
                try {
                    os.close();
                } catch (IOException e) {

                }
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5586671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档