PHPイメージックRGBからCMYKインバート?
質問
RGB .GIFをImagICK PHPモジュールを使用してCMYK .GIFに変換しようとしています。
このコードを書きました
$i = new Imagick('mosaique.gif');
$i->setImageColorspace(Imagick::COLORSPACE_CMYK);
$i->setImageFormat('gif');
$i->writeImage('mosaique-cmyk.gif');
しかし、結果として生じる「mosaique-cmyk.gif」はまだrgbです...しかし、逆の色(o_o)
私は何が間違っているのですか?
編集:
.jpgで試してみましたが、画像はCMYKに変換されますが、それでもネガティブです。
編集2:
別のサーバーで.pdfを作成するスクリプトを実行しようとしましたが、正常に動作します。
Imagicickに既知のバグはありますか? PHP5ライブラリに設定するオプションはありますか?
私に返されたバージョンが逆の画像が正しく動作するものよりも新しいバージョンです
間違った結果PHP 5.3.3 Imagicick 3.0.0RC1 ImageMagick 6.6.2
正しい結果PHP 5.2.10 Imagicick 2.1.1 ImageMagick 6.5.1
解決
実際、エラーはバグです;)
私はそれを報告しました、他のいくつかは私の恐怖を確認しました、そして今、それは修正のために開発者に割り当てられています: http://pecl.php.net/bugs/bug.php?id=22184
この瞬間、解決策は、ライブラリの別のバージョンを使用することです。
他のヒント
GIFは、「インデックス化」という256色形式です。 GIFをCMYKとして保存できるとは思いません。 256色のそれぞれはRGB値ですが、完全なRGB範囲を保存することはできません。
これを試して:
$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();
この問題を解決しました。このStackOverFlowページで私の答えをご覧ください。ImagiCKを使用して、RGBからCMYKに画像を変換します
(ケビン)
NegateImage()の問題です。簡単に修正できます。
こちらをご覧ください http://imagemagick.org/usage/formats/#color_profile
cmyk_image.jpg -colorspace rgb rgb_image.jpgを変換します