Imagick вызывает выходной анализатор ошибок

Я использую 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 ответ

Решение

Я бы искал другой пример с Imagick, так как ваш выглядит немного беспорядочно. У вас есть заголовок в середине вашего кода, который используется для отображения. Понятия не имею, почему у вас есть chmod, и я бы подумал, что если это потребуется, это будет в начале кода Imagick. Я также не вижу никаких миниатюр кода.

Попробуй это:

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

(Фильтр не является обязательным, так как Imagick выберет лучший фильтр для увеличения или уменьшения размера.)

Я думаю, как @Mark Setchell говорит, что уничтожать не нужно

Другие вопросы по тегам