imagick导致输出parseerror

时间:2018-10-14 16:22:36

标签: imagemagick imagick parse-error php-7.2

我正在使用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时,它就会与产生输出的其他函数混淆。

1 个答案:

答案 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表示销毁是不必要的