我正在尝试将原始CMYK(Coated FOGRA27(ISO 12647-2:2004)图像转换为sRGB(Apple RGB),然后再转换回CMYK(Coated FOGRA27(ISO 12647-2:2004)并保留所有图像)在PHP中通过Imagick的颜色。现在我对颜色的了解不是很高但是我想尽可能接近原始颜色,但是在转换之后颜色强度似乎相当偏离。我想知道是否有人知道保持原始颜色的解决方案。
此处参考的是所有原始图像和转换图像: https://drive.google.com/drive/folders/0B0_03DCODKMJVXRvRUhPQTh6ZjA?usp=sharing
我使用以下代码将原始图像转换为sRGB(之后颜色似乎仍然很好)
$img = new Imagick();
$img->readImage( URL::to('/storage/' . 'images/7961_58d5017e0c3a6_2k_749/original/2k_749.jpeg') );
$img = Image::make( $img );
$img_core = $img->getCore();
$img_core->profileImage('icc', Storage::get('color_profiles/AppleRGB.icc'));
$img_core->transformimagecolorspace(\Imagick::COLORSPACE_SRGB);
Storage::put( 'images/7961_58d5017e0c3a6_2k_749/original/2k_749_rgb.jpeg', $img->stream('jpg', 100) );
我使用以下代码将图像转换回CMYK
$img = new Imagick();
$img->readImage( URL::to('/storage/' . 'images/7961_58d5017e0c3a6_2k_749/original/2k_749_rgb.jpeg') );
$img = Image::make( $img );
$img_core = $img->getCore();
$img_core->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH);
$img_core->setImageResolution(300,300);
$img_core->profileImage('icc', Storage::get('color_profiles/CoatedFOGRA27.icc'));
$img_core->transformimagecolorspace(\Imagick::COLORSPACE_CMYK);
$return = Storage::put( 'images/7961_58d5017e0c3a6_2k_749/original/2k_749_conv.jpeg', $img->stream('jpg', 100) );
在这次转换之后,颜色已经关闭,当使用Photoshop将sRGB版本转换为CMYK时,颜色似乎几乎是相同的,我希望这也可以通过PHP中的Imagick来实现。
谢谢!