2011-01-28 7 views
3

J'essaye de convertir un .gif RVB en un .gif de CMYK utilisant le module de PHP d'IMagick.PHP IMagick RVB à CMJN inverse?

J'ai écrit ce morceau de code

$i = new Imagick('mosaique.gif'); 
$i->setImageColorspace(Imagick::COLORSPACE_CMYK); 
$i->setImageFormat('gif'); 
$i->writeImage('mosaique-cmyk.gif'); 

Mais la résultante "mosaique-cmyk.gif" encore RGB ... mais avec des couleurs inversées (O_O)

ce que je fais faux?

EDIT:

J'ai essayé avec un .jpg et l'image est convertie en CMJN, mais il alambics en négatif.

EDIT 2:

J'ai essayé d'exécuter mon script faire un .pdf sur un autre serveur et il fonctionne très bien.

Y a-t-il un bogue connu dans IMagick? Y a-t-il des options à définir dans la bibliothèque php5?

La version qui me renvoie l'image inversée est plus récente que celle qui fonctionne correctement

RÉSULTAT MAL PHP 5.3.3 imagick 3.0.0RC1 ImageMagick 6.6.2

CORRECT RÉSULTAT PHP 5.2 .10 IMagick 2.1.1 ImageMagick 6.5.1

Répondre

3

L'erreur en fait, il est un bug;)

Je l'ai signalé, d'autres r a confirmé ma peur et maintenant il est assigné à un développeur pour un correctif: http://pecl.php.net/bugs/bug.php?id=22184

En ce moment la solution c'est d'utiliser une version différente des bibliothèques.

+0

J'ai une solution pour cela. Voir ma réponse –

2

Le GIF est un format à 256 couleurs appelé "indexé". Je ne pense pas qu'on puisse enregistrer un gif comme cmyk. Chacune des 256 couleurs est une valeur RVB, mais elle n'est pas capable de stocker la gamme RVB complète.

+0

J'ai essayé avec Illustrator et il convertit votre .gif en CMJN mais quand il enregistre l'image en tant que .gif il est de retour sur RVB, donc vous avez probablement raison!J'ai déjà essayé mon exemple précédent sur JPG, il est converti en CMYK mais il est toujours en négatif: | – Riccardo

+0

CMJN jpg n'est pas non plus supporté universellement. Photoshop le fait, mais tous les logiciels ne peuvent pas le gérer. En outre, techniquement GIF n'est pas RVB, mais la couleur indexée. Vous confondez les termes. Chaque fois que vous passez de rgb à cmyk, vous perdez la fidélité des couleurs. – horatio

1

Essayez ceci:

$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(); 
-2

voir ici http://imagemagick.org/Usage/formats/#color_profile

convertir cmyk_image.jpg -colorspace rgb rgb_image.jpg

+0

La question portait sur l'extension php imagick, pas sur la ligne de commande "convert" d'ImageMagick, donc cette réponse est "pas sur le sujet". => -1 – griffin

+0

php imagick ne le fait pas, c'est juste un wrapper pour ImageMagick et si vous connaissez l'option de ligne de commande, vous pouvez l'utiliser dans votre code php. –

+0

C'est un wrapper pour la bibliothèque ImageMagick, pas pour l'outil de conversion. Ce n'est pas pareil. Et le wrapper n'expose pas toutes les options. https://github.com/mkoppanen/imagick/ vous pouvez voir la source et voir, qu'en fait il n'appelle PAS simplement les commandes cli IM (voir imagick.c), mais expose les fonctionnalités individuellement. – griffin

Questions connexes