Bug 50646 - Фатальная ошибка PHP при преобразовании png изображения
Summary: Фатальная ошибка PHP при преобразовании png изображения
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: ImageMagick (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Anton Farygin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-06-14 15:14 MSK by strepkovaas
Modified: 2024-06-14 16:10 MSK (History)
12 users (show)

See Also:


Attachments
Невозможно загрузить метаданные. (7.63 KB, image/png)
2024-06-14 15:14 MSK, strepkovaas
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description strepkovaas 2024-06-14 15:14:00 MSK
Created attachment 16266 [details]
Невозможно загрузить метаданные.

Стенд, обновленный до sisyphus:
kworkstation-10.3-x86-64

Версия пакета:
ImageMagick-7.1.1.31-alt1

Шаги воспроизведения:
Необходимо тестовое PNG-изображение (назвать "file.png")

1) Установить пакеты:
# apt-get install -y ImageMagick php8.2{,-imagick,-fpm-fcgi} apache2-mod_php8.2

2) Создать тестовый скрипт:
$ cat > php8.2-imagick.php << "EOF"
<?php
$im = new Imagick("file.png");
$im->thumbnailImage(200, null);
$im->borderImage(new ImagickPixel("white"), 5, 5);
$reflection = $im->clone();
$reflection->flipImage();
$gradient = new Imagick();
$gradient->newPseudoImage($reflection->getImageWidth() + 10, $reflection->getImageHeight() + 10, "gradient:transparent-black");
$reflection->compositeImage($gradient, imagick::COMPOSITE_OVER, 0, 0);
$reflection->setImageOpacity( 0.3 );
$canvas = new Imagick();
$width = $im->getImageWidth() + 40;
$height = ($im->getImageHeight() * 2) + 30;
$canvas->newImage($width, $height, new ImagickPixel("black"));
$canvas->setImageFormat("png");
$canvas->compositeImage($im, imagick::COMPOSITE_OVER, 20, 10);
$canvas->compositeImage($reflection, imagick::COMPOSITE_OVER, 20, $im->getImageHeight() + 10);
$canvas->writeImage('php8.2-imagick-result.png');
echo $canvas;
?>
EOF

3) Выполнить тестовый скрипт:
$ php8.2 php8.2-imagick.php > php8.2-imagick-result-2.png

4) Открыть файл php8.2-imagick-result.png

Фактический результат:
При выполнении скрипта получаем ошибку: PHP Fatal error: Uncaught Error: Call to undefined method Imagick::setImageOpacity() in /home/test/php8.2-imagick.php:10
При попытке открытия изображения: Невозможно загрузить метаданные.

Ожидаемый результат:
Скрипт отрабатывает без ошибок. Получаем изображение с его отображением на черном фоне. 

Ошибка воспроизводится в p11 (ImageMagick-7.1.1.31-alt1).
Ошибка НЕ воспроизводится в p10 (ImageMagick-6.9.13.9-alt1).