将CMYK转换为sRGB到CMYK时保持颜色Imagick PHP

时间:2017-04-11 13:50:50

标签: php colors imagick color-profile

我正在尝试将原始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来实现。

谢谢!

0 个答案:

没有答案