我正在使用php 7.2和ImageMagick-7.0.8-12。我使用它来创建缩略图,如下所示:
function thumbimg($sourcePath, $thumbPath) {
try {
if (file_exists($sourcePath)) {
$imagick = new Imagick();
$imagick->readImage($sourcePath);
$imagick->setImageFormat("jpg");
header('Content-Type: image/jpeg');
$imagick->writeImage($thumbPath);
$imagick->clear();
$imagick->destroy();
chmod($thumbPath, 0755);
return;
}
} catch (ImagickException $e) {
echo $this->raiseError('Could not save image to file: ' . $e->getMessage(), IMAGE_TRANSFORM_ERROR_IO);
}
return;
}
php脚本确实按设计返回了回显的JSON,但是当我查看网络返回预览时,它显示了一个空白图像,并带有指向该脚本的发布链接。此行为始于行$imagick = new Imagick();
,然后再正常运行。当我确实获得了所需的JSON时,它就会与产生输出的其他函数混淆。
答案 0 :(得分:3)
我会寻找另一个Imagick示例,因为您的示例看起来有些混乱。您在代码中间有一个标头,用于显示。不知道为什么要有chmod,而我本来会想,如果需要的话,那将是Imagick代码的开始。我也看不到任何缩略图代码。
尝试一下:
$im = new Imagick($input);
$im->resizeImage( 100, 100, imagick::FILTER_LANCZOS, TRUE );
$im->writeImage('resizeImage.jpg');
$im->destroy();
(过滤器是可选的,因为Imagick将在增大或减小尺寸时选择最佳的过滤器。)
我认为@Mark Setchell表示销毁是不必要的