Spero di poter aiutare i colleghi developer alle prese con la conversione attraverso Imagemagick RGB to CMYK.

Scenario: dobbiamo convertire lato server un’immagine RGB in CMYK

Problema: letta la scarna documentazione di Imagemagick sulla refernece di Php ci imbattiamo in un annoso problema: l’immagine ottenuta è in negativo!!!

Soluzione: dopo aver letto post su post sui soliti siti senza riuscire a trovare una soluzione e grazie al supporto di Giacomarco, ecco svelato il mistero.

Se si deve convertire un’immagine occorre usare transformimagecolorspace, mentre se si sta generando un’immagine ex-novo allora si deve utilizzare transformimagecolorspace:

$image->transformimagecolorspace(Imagick::COLORSPACE_CMYK);

Se invece si sta creando un’immagine ex-novo allora si deve utilizzare setImageColorSpace

$image->setImageColorSpace(Imagick::COLORSPACE_CMYK);

Ecco un esempio:

$image = new Imagick();
$image->readImage(rgb.jpg);
$image->transformimagecolorspace(Imagick::COLORSPACE_CMYK);
$image->profileImage('icc', file_get_contents(/path/CoatedFOGRA27.icc'));
$image->writeImage(cmyk.rgb);

Per gli amici in lingua inglese: [SOLVED] imagemagick convert image RGB to CMYK!