gulpでのwebp変換(CMYK形式)

目次

問題の発生

Gulpビルドでgulp-webpを使ってJPEG画像をWebP形式に変換する際、以下のエラーが発生しました。

エラーメッセージ:

PluginError: libjpeg error: Unsupported color conversion request
Error! Could not process file /private/var/folders/.../[temp-file]
fileName: '/Users/pumi/Desktop/shopify/dev/assets/img/cr106-black.jpg'

原因の特定

fileコマンドで画像ファイルの詳細を確認したところ、問題が明らかになりました。

エラーが出たファイル

$ file cr106-black.jpg
JPEG image data, ..., components 4

正常に変換できたファイル

$ file cr106-black-back.jpg
JPEG image data, ..., components 3
原因: CMYK色空間(4コンポーネント)のJPEGファイルはcwebpで正しく処理できません。通常のRGB形式(3コンポーネント)である必要があります。

解決方法

1. ImageMagickのインストール

Homebrewを使ってImageMagickをインストールします。

brew install imagemagick

2. バックアップの作成

念のため、元の画像をバックアップしておきます。

cd ~/Desktop/shopify/dev/assets/img/
cp -r ~/Desktop/shopify/dev/assets/img ~/Desktop/shopify/dev/assets/img_backup

3. 画像を一括でRGB形式に変換

すべてのJPEG画像をRGB(3コンポーネント)に変換します。

cd ~/Desktop/shopify/dev/assets/img/

for file in *.jpg; do
  if [ -f "$file" ]; then
    echo "Converting: $file"
    magick "$file" -colorspace sRGB -strip "${file}.tmp"
    mv "${file}.tmp" "$file"
  fi
done
注意: ImageMagick 7ではconvertコマンドは非推奨になっており、magickコマンドを使用することが推奨されています。

4. ビルドの実行

変換後、Gulpビルドを再実行します。

cd ~/Desktop/shopify/dev
npx gulp build
結果: すべての画像が正常にWebP形式に変換されました!

確認方法

個別のファイルがRGB形式になったか確認するには:

file cr106-black.jpg

components 3と表示されればOKです。

まとめ

  • gulp-webp(cwebp)はCMYK形式のJPEGを処理できない
  • fileコマンドでcomponents 4と表示される画像はCMYK形式
  • ImageMagickを使ってRGB形式(sRGB)に変換することで解決
  • 一括変換スクリプトで複数ファイルを効率的に処理可能
参考: この問題は、PhotoshopやIllustratorなどのプロフェッショナルな画像編集ソフトで保存したJPEGに発生することがあります。特に印刷用途でCMYK形式を使用している場合に注意が必要です。

この記事が気に入ったら
フォローしてね!

目次