我正试图在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 回答
你可以发布一个输入PNG的链接吗?
如果您的输入PNG图像不包含DCI-P3配置文件,那么您还需要在ImageMagick命令中添加它,这将成为:
对于DCI-P3配置文件,请参阅:http://www.color.org/chardata/rgb/DCIP3.xalter
请注意,在ImageMagick 7中,magick取代了convert . 如果你使用magick转换,那么你很可能会使用ImageMagick 6 .