Изображение PHP / Imagick / PDFlib Flop изменяет свою битовую глубину

У меня есть PNG изображение и попытка флопа (зеркало) с помощью функции imagick php. Он точно выполняет флоп, но

Базовое изображение в формате 24 бит RGB

и после преобразования он получает

8 бит с чередованием

, Таким образом, основная проблема заключается в том, что когда я использую для размещения обоих изображений на своих страницах pdflib, одно из изображений (конвертированных) отображает фигурные фигуры … Исходное изображение Оригинальное изображение ----> Выход после флопа (зеркало) с помощью Imagick и рендеринга в PDFlib -> Выход после флопа (зеркало) с помощью Imagick и рендеринга в PDFlib ->

Мой код просто —->

$im = new Imagick($background_image); $im->flopImage(); $im->writeimage($background_image."_flop.png"); 

Дата изменения => 29 Окт 2013 Оригинальное изображение -> Размер 4.68 KB Бит Глубина 32 Flopped Image -> Размер 7.99 KB Бит Глубина 64 Автоматически изменяет его свойства ОРИГИНАЛ *** ORIGINAL ***

переоборудованный *** Старинная ***

Imagick использует самый маленький формат для сохранения изображения. Сохранение в этих форматах создает одинаковое изображение, но имеет размеры:

  • Палитра – 3.38kB
  • RGBA 32bit – 6.14kB
  • RGBA 64bit – 8.09kB

Сохранение до наименьшего возможного файла обычно является желанием людей. Однако вы можете отключить это несколькими способами.

Вы можете указать Imagick использовать тот же формат PNG, что и исходное изображение, установив параметр png:format в png00 . например

 $imagick = new Imagick(realpath("../images/FlopOriginal.png")); $imagick->flopImage(); $imagick->setOption('png:format', 'png00'); $imagick->writeImage("../images/Flop.png"); 

Полными параметрами для png:format являются png8, png24, png32, png48, png64 и png00.

В качестве альтернативы вы можете явно указать формат изображения, который будет использоваться при сохранении PNG-файла, через png:bit-depth и png:color-type например

 $imagick = new Imagick(realpath("../images/FlopOriginal.png")); $imagick->flopImage(); $imagick->setOption('png:bit-depth', '8'); $imagick->setOption('png:color-type', 6); $imagick->writeImage("../images/Flop.png"); 

Значения типа цвета взяты из libpng.h и являются:

 PNG_COLOR_TYPE_GRAY 0 PNG_COLOR_TYPE_RGB 2 PNG_COLOR_TYPE_PALETTE 3 PNG_COLOR_TYPE_GRAY_ALPHA 4 PNG_COLOR_TYPE_RGB_ALPHA 6 

Оба этих метода создают на флопе изображение, которое является RGBA 32bit, как исходное изображение.