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.
Imagick::profileImage
(PECL imagick 2.0.0)
Imagick::profileImage — Añade o elimina un perfil de una imagen
Descripción
bool Imagick::profileImage
( string
$name
, string $profile
)Añade o elimina un perfil ICC, IPTC, o genérico de una imagen. Si el perfil es NULL, se elimina de la imagen, si no, se añade. Use como nombre '*' y un perfil NULL para eliminar todos los perfiles de la imagen.
Parámetros
-
name -
-
profile -
Valores devueltos
Devuelve TRUE en caso de éxito.
Errores/Excepciones
Lanza ImagickException en caso de error.
gavin at softyolk dot com ¶
3 years ago
Eero Niemi (eero at eero dot info) ¶
5 years ago
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.
