1

Я пытаюсь преобразовать BMP с 24 бит/пиксель в режим 16 бит/пиксель в ImageMagick.ImageMagick Преобразование BMP с 24 бит в 16 бит Режим?

convert /tmp/a/new/37.bmp -depth 5 -define bmp:format=bmp2 /tmp/a/new/37_v2_16bit.bmp 
convert /tmp/a/new/37.bmp -depth 5 -define bmp:format=bmp3 /tmp/a/new/37_v3_16bit.bmp 

Результат имеют те же 8 бит на R., в G. и на В., по выходу: определить -verbose

Что я делаю неправильно? Как получить 16-битный цвет в BMP?

Спасибо!

П. С.

-depth значение

глубина изображения. Это количество бит в пикселе. Единственные допустимые значения не являются 8 или 16. http://linux.math.tifr.res.in/manuals/html/convert.html

= (

Официальная документация говорит (не упомянутые ограничения):

-depth значение

глубина изображения.

Это число бит в цветовом образце в пикселе. Используйте этот параметр для укажите глубину необработанных изображений, глубина которых неизвестна, например, GREY, RGB или CMYK, или чтобы изменить глубину любого изображения после его чтения.


новообращенный /tmp/a/new/37.bmp -Цвета 256 /tmp/a/new/37_256.bmp

делает файл меньше, но визуально это тоже самое! WTH ?!)))))


новообращенный /tmp/a/new/37.bmp -Краски 65536 /tmp/a/new/37_64k.bmp

такой же размер, то же самое визуальное изображение ,


Преобразовать /tmp/a/new/37.bmp -dither Нет -Краски 256 /tmp/a/new/37_256_nd.bmp

немного меньше снова, но это делает не похожи на 256-цветные! ошибка? 256 цветных 800x600 BMP ~ 800x600x1 байт (без заголовков) ~ 480 000 байт. Но он говорит ~ 650 000 байт)))) смешная программа))

+0

https://www.google.fr/search?q=convert+a+BMP+from+24+bit+to+16+bit+Mode+in+ImageMagick.&ie=utf-8&oe=utf-8&gws_rd = cr & ei = nHFwVuWfBcOxad-RqKAC – cutzero

+0

man-страница 'ppmtobmp' согласна с тем, что 16-битные BMP не возможны ... http://manpages.ubuntu.com/manpages/hardy/man1/ppmtobmp.1.html –

+0

Что вы на самом деле хотите сделать с BMP 16-бит? Возможно, вы можете использовать PNM-формат PNG или NetPBM, который очень прост в обработке ... https://en.m.wikipedia.org/wiki/Netpbm_format –

ответ

1

Документация, которую вы указали из linux.math ... довольно старая (2001) и неверна в отношении -depth. Параметр «-depth 16» не означает 16-битные пиксели (например, R5G6R5 или R5G5R5A1); -depth 16 означает 48-битный/пиксельный R16, G16, B16 или 64-бит/пиксель R16, G16, B16, A16 пикселей. «Официальная документация», которую вы указали (2015), верна.

ImageMagick не поддерживает такие форматы 16 бит/пиксель, поэтому вам необходимо сохранить их в формате 8 бит/канал и жить с большим размером файла.

Также представляется, что для изображений с 256 или меньшим количеством цветов он будет писать цветное изображение с 1, 4 или 8-битными индексами. Вам не нужно делать какой-либо специальный запрос, он будет делать это автоматически. Используйте «-compress none» для несжатых BMP. В настоящее время ImageMagick (версия 6.9.2-8) дает мне ожидаемый файл 480kbyte, если я начну с 800х600 изображения с более чем 256 цветов и использовать

convert im.bmp -colors 256 -compress none out.bmp 

ImageMagick не поддерживает 16-битные «битовые поля» формат BMP во время чтения, но я не вижу никаких признаков того, что он может их написать, и не пробовал ни читать, ни писать такие изображения.

+0

Спасибо Гленн за упоминание определения глубины цвета - я искал аналогичную информацию и просто пришел к выводу, что глубина представляет цвет, а не итоговый (как вы упомянули) заняла много часов поиска. Тем не менее, я все еще ищу (а) «официальное» местоположение man-страницы setImageDepth() на ImageMagick.org. Я использую php Imagick, чья manpage на этом очень короткая (b) Я хочу установить глубину изображения на 2 (то есть на цвет RGB) и в конечном итоге записать его как PNG. Кажется, что нет эффекта настройки глубины - в конечном итоге это получается как 8 бит. Может кто-нибудь помочь? – sm535

+1

Формат PNG не поддерживает RGB222 или 6-битный индекс, поэтому он будет записан как RGB888 или 8-битный индекс, последний с палитрой с 64 входами. –

+0

Гленн, спасибо большое снова. Является ли формат PNG не поддерживающим RGB222 ограничением Imagick/IM? Я спрашиваю об этом, потому что вижу это здесь: https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_size_factors «Глубина цвета может варьироваться от 1 до 64 бит на пиксель». Если да, есть ли указатель на поддержку разных глубин для каждого формата файла в PHP Imagick/IM? Мне не обязательно использовать PNG в качестве выходного формата. – sm535

Смежные вопросы