我的最终目标是将输入图像的大小调整为 100 像素宽、125 像素高。一些输入图像是不同的纵横比,所以我希望它们在一个 100x125 的容器中,背景稀疏地从它们的边缘颜色填充。
好的,所以这适用于基本调整大小:
$image = new Imagick($imgFile);
$image->resizeImage(100,0, Imagick::FILTER_LANCZOS, 1, false);
$image->writeImage("$Dir/$game.png");
header("Content-type: ".$image->getImageFormat());
echo $image;
$image->clear();
$image->destroy();
但是,我已经搜索了几个小时,但我找不到 PHP 的 Imagick 库的简单“这就是您在画布中居中图像的方式”位。一切都是为了实际的 ImageMagick 转换应用程序,这并不是我真正想要的。我已经尝试将调整大小的图像合成到具有设置宽度和高度的空 newImage 中,但无论合成类型如何,它似乎都会覆盖尺寸,将重力设置为中心,然后将范围设置为 100x125 没有效果(它总是位于 0,0,并尝试将 y 偏移量设置为 ((125-imageheight)/2) 导致偏移量超过应有的值)
编辑:
$imageOutput = new Imagick();
$image = new Imagick($imgFile);
$image->resizeImage(100,0, Imagick::FILTER_LANCZOS, 1, false);
$imageOutput->newImage(100, 125, new ImagickPixel('black'));
$imageOutput->compositeImage($image, Imagick::COMPOSITE_ADD, 0, ((125 - $image->getImageHeight()))/2 );
$imageOutput->setImageFormat('png');
$imageOutput->writeImage("$Dir/$game.png");
header("Content-type: ".$imageOutput->getImageFormat());
echo $imageOutput;
$image->clear();
$image->destroy();
所以我开始了定心工作,重力显然对实际图像没有影响。
我完全不知道我什至会从哪里开始尝试使用库重新创建命令行边缘稀疏填充 PHP。