我试图在iPhone的屏幕截图上进行图像处理,但我遇到了一些麻烦,因为红色频道没有落入预期的范围。这些问题是由于图像的颜色空间带来了DCI-P3,而我们的算法大多是为我们所拥有的老iPhones和安卓的标准iPhones颜色空间编写的。
屏幕截图提供给我们的区域有r=59,g=125,b=236的RGB值,当在DCI-P3颜色空间中时。我们期望红色通道小于30,并确定通过Photoshop的“编辑->转换为配置文件”选项转换图像会导致特定像素的红色值为22。
我们正在一个Jax服务上进行图像处理,所以我第一次尝试解决这个问题是使用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的“编辑->转换为配置文件”工具的图像?
发布于 2018-06-22 18:13:57
你能张贴一个链接到您的输入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取代了转换。如果你使用魔法转换,那么你很可能会使用ImageMagick 6。
https://stackoverflow.com/questions/50992170
复制相似问题