我在Windows 8.1上使用ImageMagick 7.0.8-66 Q16 x64 我的PHP在XAMPP上是7.4.1。
我已经在PHP中使用exec()成功运行了以下命令:
convert _temp_.jpg
( +clone -background black -shadow 88x3+2+2 )
+swap -background none -layers merge
+repage -background #eeeeee -layers flatten
+repage -shave 3x3
( -size 100x100 xc:#eeeeee )
+swap -gravity northwest -geometry +5+5 -compose over -composite output.jpg
它会拍摄图像,将其调整大小以适合100x100的缩略图,并在中性的#eeeeee背景画布上为图像添加阴影。可以。
我想重写它以使用Imagick PHP扩展,但是在翻译时遇到了麻烦。这是我翻译它(带有注释)的方法,该方法不起作用:
// convert _temp_.jpg
$im = new imagick();
$im->readImage('_temp_.jpg');
// ( +clone -background black -shadow 88x3+2+2 )
$im_clone = clone $im;
$im_clone->setImageBackgroundColor('black');
$im_clone->shadowImage(88,3,2,2);
// +swap -background none -layers merge
$im->setImageBackgroundColor('none');
$im->addImage($im_clone);
$im->mergeImageLayers(imagick::LAYERMETHOD_MERGE);
// +repage -background #eeeeee -layers flatten
$im->cropImage(88,88,+5,+5);
$im->setImagePage(88,0);
$im->setImageBackgroundColor('#eeeeee');
$im->mergeImageLayers(imagick::LAYERMETHOD_flaTTEN);
// +repage -shave 3x3
$im->cropImage(88,0);
$im->shaveImage(3,3);
// ( -size 100x100 xc:#eeeeee )
$im_pseudo = new Imagick();
$im_pseudo->newPseudoImage(100,100,'xc:#eeeeee');
// +swap -gravity northwest -geometry +5+5 -compose over -composite output.jpg
$im->setImageGravity(imagick::GRAVITY_NORTHWEST);
$im->compositeImage($im_pseudo,Imagick::COMPOSITE_OVER,5,5);
$im->writeImage('output.jpg');
我想念什么?