Imagick 导致输出解析错误

Imagick causing output parseerror

我正在使用 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 脚本按设计 return 回显 JSON,但是当我查看网络 return 预览时,它显示空白图像post link 到那个脚本。此行为从 $imagick = new Imagick(); 行开始,在此之前它表现正常。虽然我确实得到了想要的 JSON,但它与产生输出的其他函数混淆了。

我会寻找另一个 Imagick 示例,因为您的示例看起来有点乱。您的代码中间有一个 header ,用于显示。不知道为什么你有一个 chmod,我想如果它是必需的,它会在 Imagick 代码的开头。我也没有看到任何缩略图代码。

试试这个:

$im = new Imagick($input);
$im->resizeImage( 100, 100, imagick::FILTER_LANCZOS, TRUE );
$im->writeImage('resizeImage.jpg'); 
$im->destroy();

(过滤器是可选的,因为 Imagick 会在增加或减小大小时选择最好的过滤器。)

我认为正如@Mark Setchell 所说的那样,销毁是不必要的