我在 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 度。我认为这与不同的文件格式有关,在合成图像之前是否有一种可接受的方式来规范化图像以防止这种情况发生?