©
本文档使用
php.cn手册 发布
(PECL imagick 2.0.0)
Imagick::profileImage — Adds or removes a profile from an image
$name
, string $profile
)Adds or removes a ICC, IPTC, or generic profile from an image. If the profile is NULL, it is removed from the image otherwise added. Use a name of '*' and a profile of NULL to remove all profiles from the image.
name
profile
成功时返回 TRUE
。
错误时抛出 ImagickException。
[#1] dadima, gmail [2014-04-05 20:07:17]
If profileImage() seems to be doing nothing ?? and "inverted colors" during a CMYK > RGB conversion is a sign of this ?? check that ImageMagick has the lcms delegate available.
From a command prompt:
convert -list configure | grep DELEGATES
If you don't see lcms in the list then Imagick won't do any color profile conversions, and won't give any warnings about this. In that case, install the Little CMS library ( http://www.littlecms.com/ ) and recompile ImageMagick.
[#2] gavin at softyolk dot com [2009-07-12 04:28:02]
Thanks for this very valuable information.
For a further push in the correct direction please
consider that you have to download the profiles,
and your most likely sources are:
http://www.color.org/srgbprofiles.xalter
and
http://www.adobe.com/support/downloads/product.jsp?product=62&platform=Windows
Note that the profiles are free, but you must install them
to make them available on you host system.
[#3] Eero Niemi (eero at eero dot info) [2008-04-29 07:01:21]
If you need to convert images that are on CMYK format into RGB and want to preserve colour information, this may be helpful:
<?php
$image = new Imagick("CMYK_image.jpg"); // load image
$profiles = $image->getImageProfiles('*', false); // get profiles
$has_icc_profile = (array_search('icc', $profiles) !== false); // we're interested if ICC profile(s) exist
if ($has_icc_profile === false)
{
// image does not have CMYK ICC profile, we add one
$icc_cmyk = file_get_contents('/path/to/icc/SomeCMYKProfile.icc');
$image->profileImage('icc', $icc_cmyk);
}
// Then we need to add RGB profile
$icc_rgb = file_get_contents('/path/to/icc/SomeRGBProfile.icc');
$image->profileImage('icc', $icc_rgb);
$image->setImageColorSpace(Imagick::COLORSPACE_RGB);
$image->writeImage("RGB_image.jpg");
?>
There may be better and more elegant ways to do this, but hope this helped.