Я собираю кучу .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
).
Кто-то сталкивался с подобной проблемой?
Посмотрев на код базовой библиотеки 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.
setImageDepth()
.