PHP で Imagick ライブラリを使用して、imagemagick で画像操作を行っています。ユーザーが写真をアップロードし、サイズを変更してから、compositeImage 関数を使用してその上に透明な PNG レイヤーを配置します。コードはおおよそ次のようになります。
$image = new Imagick($imagepath);
$overlay = new Imagick("filters/photo-filter-flat.png");
$geo = $image->getImageGeometry();
if ($geo['height'] > $geo['width']) {
$image->scaleImage(0, 480);
} else {
$image->scaleImage(320, 0);
}
$image->compositeImage($overlay, imagick::COMPOSITE_ATOP, 0, 0);
return $image;
奇妙なことに、一部の写真では、オーバーレイを上に配置すると、オーバーレイが 90 度回転します。これはさまざまなファイル形式に関係していると思いますが、これを防ぐために画像を合成する前に画像を正規化する方法はありますか?