PHP imagick RGB a CMYK inverte?
Domanda
Sto cercando di convertire un RGB .gif ad un CMYK .gif utilizzando il modulo imagick PHP.
Ho scritto questo pezzo di codice
$i = new Imagick('mosaique.gif');
$i->setImageColorspace(Imagick::COLORSPACE_CMYK);
$i->setImageFormat('gif');
$i->writeImage('mosaique-cmyk.gif');
Ma la risultante "Mosaique-cmyk.gif" ancora un RGB ... ma con colori invertiti (O_O)
Che cosa sto facendo di sbagliato?
EDIT:
Ho provato con un .jpg e l'immagine viene convertita in CMYK ma Stills in negativo.
EDIT 2:
Ho cercato di correre il mio script facendo un .pdf su un altro server e funziona bene.
Ci sono dei bug noto in imagick? Ci sono alcune opzioni per impostare nella libreria PHP5?
La versione che restituisce me l'immagine invertita è più recente rispetto a quello che funziona correttamente
risultato sbagliato PHP 5.3.3 imagick 3.0.0RC1 ImageMagick 6.6.2
risultato corretto PHP 5.2.10 imagick 2.1.1 ImageMagick 6.5.1
Soluzione
L'errore di fatto si tratta di un bug;)
ho riferito, qualche altro ha confermato la mia paura e ora è assegnato ad uno sviluppatore per una correzione: http://pecl.php.net/bugs/bug.php?id=22184
In questo momento la soluzione è utilizzare una versione diversa delle librerie.
Altri suggerimenti
GIF is 256-color format aka "indexed." I do not think one can save a gif as cmyk. Each of the 256 colors is an RGB value, but it is not capable of storing the full RGB gamut.
Try this:
$im->stripImage();
$icc_cmyk_profile_path='image_functions/cmyk_icc_profiles/USWebUncoated.icc';
//[http://www.mattbeals.com/icc/][1]
$icc_cmyk = file_get_contents($icc_cmyk_profile_path);
$im->profileImage('icc', $icc_cmyk);
unset($icc_cmyk);
$colorspace=$im->getImageColorspace();
if ($colorspace==12) {
echo "CMYK";
}
$im->stripImage();
$im->writeImage($destination);
$im->clear();
$im->destroy();
I solved this issue: Please visit my answer on this stackoverflow page: Convert image from RGB to CMYK with Imagick
(Kevin)
It is a negateImage() issue. Easy to fix.
see here http://imagemagick.org/Usage/formats/#color_profile
convert cmyk_image.jpg -colorspace rgb rgb_image.jpg