首页 文章

使用Java ImageIO或Imagemagick将DCI-P3色彩空间转换为sRGB

提问于
浏览
0

我正试图在iPhone-X的屏幕截图上进行图像处理,但是我遇到了麻烦,红色通道没有落到预期的范围内 . 问题是由于图像的色彩空间带来了DCI-P3,而我们的大部分算法都是针对我们拥有的旧款iPhone和Android的标准sRGB色彩空间而编写的 .

当在DCI-P3颜色空间中时,给出我们问题的屏幕截图的区域具有r = 59,g = 125,b = 236的RGB值 . 我们希望红色通道小于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的“编辑 - >转换为配置文件”工具的结果图像?

1 回答

  • 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转换,那么你很可能会使用ImageMagick 6 .

相关问题