使用Imagick在PHP中转换和模糊上传的图像


Convert and blur an uploaded image in PHP with Imagick

我对PHP很陌生,这是我第一次尝试使用Imagick,所以为了实现我的目标,我写的脚本肯定有很多错误。:-)

我想做的事:

  1. 将上载的图像转换为JPEG并调整其大小
  2. 制作一个模糊的版本
  3. 将两个图像移动到某个目录

我写了一个函数,它应该能做到这一点,但正如你所猜测的,它什么都不做:

function convertAndBlur($inputIMG, $dst, $width, $quality) {
   $img = new Imagick($inputIMG);
   $img->scaleImage($width, 0, true); // keep aspect ratio
   $img->setImageFormat('jpeg');
   $img->setImageCompressionQuality($quality);
   $img->writeImage($dst . ".jpg");
   $imgBlur = new Imagick($img);
   $imgBlur->blurImage(5,3);
   $imgBlur->writeImage($dst . "_blur.jpg");
   $img->clear(); $img->destroy();
   $imgBlur->clear(); $imgBlur->destroy(); 
}

函数是这样调用的:

$picture = $_FILES["picture"]["tmp_name"];
$pictureName = "foo";
if(!is_image($picture)) { die("not an image"); }
$picturePath = "uploads/" . $pictureName;
convertAndBlur($picture, $picturePath, 1000, 90);

这肯定会让你们中的一些人翻白眼,但这对我来说是完全未知的领域。有人能帮我吗?谢谢

Imagick的构造函数不能将Imagick的实例作为参数。要创建另一个对象,请尝试用$imgBlur = clone $img;代替$imgBlur = new Imagick($img);,这将创建$img的碳副本。请在此处阅读有关克隆Imagick对象的详细信息。