我对PHP很陌生,这是我第一次尝试使用Imagick,所以为了实现我的目标,我写的脚本肯定有很多错误。:-)
我想做的事:
- 将上载的图像转换为JPEG并调整其大小
- 制作一个模糊的版本
- 将两个图像移动到某个目录
我写了一个函数,它应该能做到这一点,但正如你所猜测的,它什么都不做:
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
对象的详细信息。