Imagick で CMYK の画像を sRGB に変換する

Imagick で CMYK の画像を sRGB に変換する

イメージ

御多分にもれず群馬県で日本を統一した kimoto です。

とあるシステムにて、「IE で画像をアップしたらうまくいかない」という連絡をいただきました。
その現象の起きた画像をもらい開発環境で確認したところ、画像が表示されず、[×] 状態となってしまいました。

いろいろと調査をしてみたところ、元画像の色指定が CMYK だったことに起因していたことがわかりました。IE では CMYK 形式の画像を表示できません。
そこで今回、ImageMagick を使ってサーバ側で自動で sRGB に変換してみようと思います。 今回は Imagick のライブラリを利用しています。

$filePath = '/path/to/your/file.jpg';
$image = new Imagick($filePath);

// CMYK だったら sRGB に変換する
$cs = $image->getImageColorspace();
if ($cs == Imagick::COLORSPACE_CMYK) {
    $image->setImageColorspace(Imagick::COLORSPACE_SRGB);
    $image->setImageFormat('jpeg');
}
$image->writeImage($filePath);

やってることは単純で、CMYK かどうかを判定して、true であれば sRGB に変換する、というものです。
ただし、これをすると色味がおかしくなってしまうという問題があります。
サービスによっては、実運用に耐えない場合もありますので、ご利用は計画的にどうぞ。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ