Установка глубины цвета с помощью Imagick

1

Я собираю кучу .tif используя Imagick. Все идет хорошо, за исключением того, что глубина цвета выходного изображения всегда уменьшается (16 на входе, 1 на выходе). Я использую setImageDepth() во время процесса, но похоже, что он вообще не действует. Вот фрагмент:

$imagick = new Imagick();
foreach ($_pile_of_tiles as $_index_to_append) {
    $_tmp_buffer = new Imagick();
    $_tmp_buffer->readImage($_index_to_append . ".tif");
    $_imagick->addImage($_tmp_buffer);
}
$_imagick->resetIterator();
$_appended_images = $_imagick->appendImages(true);
$_appended_images->setImageFormat("tiff");
$_appended_images->setImageDepth(16);
file_put_contents("output.tif", $_appended_images);

Это дает мне 1-битное изображение. Я попытался сделать это с помощью командной строки, и он отлично работает (-depth 16).

Кто-то сталкивался с подобной проблемой?

  • 0
    это может помочь: stackoverflow.com/questions/19585032/…
  • 0
    @brandelizer Спасибо, но не совсем. Я знаю, что Imagick пытается сохранить вывод в наименьшем возможном размере, но он все равно должен интерпретировать мой setImageDepth() .
Показать ещё 2 комментария
Теги:
imagick

1 ответ

3
Лучший ответ

Посмотрев на код базовой библиотеки ImageMagick, очевидно, это работает:

$imagick = new Imagick();
$imagick->newPseudoImage(200, 200, 'xc:white');
$imagick->setType(\Imagick::IMGTYPE_TRUECOLOR);
$imagick->setImageFormat('tiff');
$imagick->setImageDepth(16);
$imagick->writeImage("./output.tif"); 

system("identify output.tif");

Выход:

output.tif TIFF 200x200 200x200+0+0 16-bit sRGB 241KB 0.000u 0:00.000

Нет. Это не документировано нигде в документах ImageMagick. Woo.

  • 0
    Круто, приятель. Спасибо за ваше время.
  • 0
    Для записи .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню