私はを使用してファイルをjpeg
ファイルに変換するconvertImage()
というメソッドを作成しました。Imagickが私のチャンネルを超えるpsdファイルをインポートできないのはなぜですか?
CMYK
からRGB
に変換するために、ICC
のプロファイルを追加しました。
これは、いくつかのファイルを除いて何千ものファイルに対してうまくいきます。PSD
maximum channels exceeded `ART00060111_B.psd' @ error/psd.c/ReadPSDImage/1085
そして他人のために:
Unable to read the file: ART00060111_A.psd
あなたがここにファイルを見つけることができます:[ART00060111_A.psd, ART00060111_B.psd, USWebUncoated.icc, sRGB_v4_ICC_preference.icc]ここ
は私phpinfo()
あるいくつかPSD
ファイルの場合
public static function convertImage($localPath, $destination, $max_width, $max_height)
{
$image = new Imagick();
$image->readImage($localPath);
if(pathinfo($localPath, PATHINFO_EXTENSION) === "psd"){
$image->setIteratorIndex(0);
}
if ($image->getImageColorspace() == Imagick::COLORSPACE_CMYK) {
$profiles = $image->getImageProfiles('*', false);
// we're only interested if ICC profile(s) exist
$has_icc_profile = (array_search('icc', $profiles) !== false);
// if it doesnt have a CMYK ICC profile, we add one
if ($has_icc_profile === false) {
$icc_cmyk = file_get_contents(__DIR__ . '/../icc/USWebUncoated.icc');
$image->profileImage('icc', $icc_cmyk);
unset($icc_cmyk);
}
// then we add an RGB profile
$icc_rgb = file_get_contents(__DIR__ . '/../icc/sRGB_v4_ICC_preference.icc');
$image->profileImage('icc', $icc_rgb);
unset($icc_rgb);
}
$image->stripImage();
$image->setImageFormat('jpg');
$image->setImageCompressionQuality(85);
$image->writeImage($destination);
$image->clear();
$image->destroy();
// we resize files in a second time because of a imagick bug (pictures become black)
$image = new Imagick();
$image->readImage($destination);
$image->scaleImage($max_width, $max_height, true);
$image->writeImage($destination);
$image->clear();
$image->destroy();
}
私はこの例外を得ましたImagickについて:
追加情報が必要な場合はお知らせください –
imagickバージョン? – NID
最大チャンネル数** ImageMagick **はPSDから読み取ることができますが、画像にはそのチャンネルがありません。あなたのPhotoshopのバージョンと、** ImageMagick **の開発者が読むことができるものとの間には、いくつかの非互換性があるとしか推測できません。PSDフォーマットは良く知られていません。https://stackoverflow.com/a/5355949/2836621失敗した画像には*「レイヤーエフェクト」*があります。これらのエフェクトを持つ画像には影響がありますか?問題を引き起こした? –