質問: $imagick->getImageProfiles("icc", true); print_r($profiles); //下記のようにsRGBのデータは入ってるのが確認できる。 //Array([icc] => HLinomntrRGB XYZ � 1acspMSFTIEC sRGB���-HP) //imagickでExifデータを消す $imagick->stripImage(); //imagickでiccを戻す if (!empty($profiles)) $imagick->profileImage("icc", $profiles['icc']); //imagickで画像ファイルにデータを書き込む $imagick->writeImage($filepath); } else { echo "ファイルをアップロードできません。"; } } else { echo "ファイルが選択されていません。"; }
回答: 下記に類似の問題がありました。 https://www.php.net/manual/ja/imagick.profileimage.php#114781 以下のコマンドの実行結果を確認してみてください。 ``` $ convert -list configure | grep DELEGATES ``` 自分の環境だと、以下のように `lcms` が含まれてまして、サンプルプログラムを実行すると`icc`のみ残ることが確認できました。 ``` $ convert -list configure | grep DELEGATES DELEGATES bzlib djvu mpeg fftw fontconfig freetype jbig jng jpeg lcms lqr lzma openexr pango png ps tiff wmf x xml zlib ``` サンプルプログラム ``` getImageProfiles("*", true); // 全プロパティ取得 print_r(array_keys($profiles)); $img->stripImage(); $img->profileImage("icc", $profiles['icc']); $img->writeImage($outpath); $outimg = new \Imagick($outpath); print_r(array_keys($outimg->getImageProfiles("*", true))); ``` 実行結果(`icc`のみ残る) ``` Array ( [0] => exif [1] => icc ) Array ( [0] => icc ) ``` ImageMagickのバージョン等が違うので、そこ起因かもしれませんが確認してみてください。