【发布时间】:2014-04-15 20:12:28
【问题描述】:
我对 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);
这肯定会让你们中的一些人翻白眼,但同样,这对我来说是完全未知的领域。谁能帮帮我?谢谢!
【问题讨论】:
-
是否显示任何错误消息?首先引起我注意的是
if(!is_image($picture)) { die("not an image"; }行中缺少)。 -
我的错,这是一个错字。实际代码中并没有丢失它。 :-) 没有错误信息,脚本什么也不做。
-
我可以发现几件事情(例如
is_image()不是一个函数,我不确定Imagick的构造函数可以接受它自己的一个实例),但是你的生活如果启用错误报告会容易得多。看看this answer。 -
is_image()是我之前做的一个自定义函数。我启用了错误报告,看来您是对的:Can not process empty Imagick object在线$imgBlur->blurImage(5,3);。然后如何处理相同的图像以获得两个不同的版本? :-/ 谢谢! -
鉴于
Imagick会抱怨,如果你不给它一个图像,我不会费心事前检查。再次直接从$inputIMG阅读怎么样?
标签: php oop upload imagemagick imagick