【问题标题】:Convert DCI-P3 Colorspace to sRGB Using Java ImageIO or Imagemagick使用 Java ImageIO 或 Imagemagick 将 DCI-P3 颜色空间转换为 sRGB
【发布时间】:2018-06-22 16:31:00
【问题描述】:

我正在尝试对 iPhone-X 的屏幕截图进行图像处理,但我遇到了红色通道未落入预期范围的问题。问题是由于图像的色彩空间引入了 DCI-P3,而我们的大多数算法都是为我们拥有的旧 iPhone 和 Android 的标准 sRGB 色彩空间编写的。

在 DCI-P3 色彩空间中,给我们带来问题的屏幕截图区域的 RGB 值为 r=59、g=125、b=236。我们希望红色通道小于 30,并且通过 Photoshop 的“编辑->转换为配置文件”选项转换图像肯定会导致特定像素的红色值为 22。

我们在 Jax-RS 网络服务上进行图像处理,所以我第一次尝试解决这个问题是使用 javax.imageio.ImageIO 和朋友。不幸的是,使用以下转换图像色彩空间的典型建议不起作用(红色值仍然太高):

BufferedImage screenshotCopy = new BufferedImage(screenshot.getWidth(), screenshot.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = screenshotCopy.createGraphics();
g2d.drawImage(screenshot, 0, 0, null);
g2d.dispose();

我也尝试过使用 Imagemagick,但对这个工具不熟悉,我只取得了一些成功。 Imagemagick 可以使用颜色空间进行转换,但是当我尝试它时,红色通道甚至更高 70+。

magick convert IMG_0812.PNG -profile ~/Desktop/srgb.icc IMG_0812_converted.PNG

有人可以帮助我使用 ImageIO(首选)或 ImageMagick 正确转换这些色彩空间,生成类似于 Photoshop 的“编辑->转换为配置文件”工具的结果图像吗?

【问题讨论】:

    标签: java imagemagick image-manipulation imagemagick-convert


    【解决方案1】:

    您可以发布一个指向您输入的 PNG 的链接吗?

    如果您输入的 PNG 图像不包括 DCI-P3 配置文件,那么您还需要在 ImageMagick 命令中添加它,这将变为:

    magick IMG_0812.PNG -profile ~/Desktop/DCI-P3-DCI.icc -profile ~/Desktop/srgb.icc IMG_0812_converted.PNG
    
    or
    
    magick IMG_0812.PNG -profile ~/Desktop/DCI-P3-D65.icc -profile ~/Desktop/srgb.icc IMG_0812_converted.PNG
    


    有关 DCI-P3 配置文件,请参阅: http://www.color.org/chardata/rgb/DCIP3.xalter

    请注意,在 ImageMagick 7 中,magick 取代了 convert。如果您使用 magick convert,那么您可能会使用 ImageMagick 6。

    【讨论】:

    • 感谢您澄清命令。我相信我的问题的根本原因是使用了不正确的 sRGB 配置文件(v4 而不是 v2)。当我从 color.org 下载 v2 时,它开始给我正确的值。我接受您的回答,因为它将有助于将来为用户验证正确的 Imagemagick 命令。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-10-23
    • 2010-11-13
    • 2019-11-15
    • 2013-01-19
    • 2019-06-15
    • 2017-04-20
    • 2013-10-19
    • 1970-01-01
    相关资源
    最近更新 更多