Imagick вызывает выходной анализатор ошибок - PullRequest
0 голосов
/ 14 октября 2018

Я использую 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 голосов
/ 14 октября 2018

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

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

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

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

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

...