3

У меня есть изображение, сохраненное в формате BMP, и я хочу преобразовать его в PNG с помощью imagemagick.

Я посмотрел на пиксели в программе просмотра в шестнадцатеричном формате и заметил, что они хранятся в 32bpp, так что есть альфа-канал. Прозрачные пиксели имеют значение RGBA (255, 255, 255, 0), и paint.NET воспринимает их как белые пиксели, вероятно, потому что не ожидает, что у BMP будут прозрачные пиксели?

В любом случае, команда, которую я использовал,

convert -alpha on -quality 95 in.bmp out.png

Однако, когда я открыл получившееся изображение в Paint.NET (который обычно правильно интерпретирует прозрачные пиксели), эти прозрачные пиксели были все еще белыми.

Я неправильно конвертирую изображения? Я хотел бы, чтобы пиксели со значением альфа 0 выглядели прозрачными в редакторе изображений, который я обычно использую.

2 ответа2

5

Вы обнаружили ошибку в ImageMagick. Это будет исправлено в ImageMagick 6.8.7-9. Я являюсь одним из разработчиков ImageMagick и только что внес исправление в наш SVN-репозиторий (http://trac.imagemagick.org/changeset/13867).

1

Это может быть не альфа-канал. Если это файл формата bitmap v4, он может иметь альфа-канал. Для более ранних версий все еще возможно хранить пиксели как 32 бита, но старший бит зарезервирован и всегда равен нулю.

Вот пример 32-битного BMP с альфа- каналом Вот пример 32-битного BMP с альфа-каналом

Пример изображения в комментариях не имеет альфа-канала в соответствии с GIMP и identify -verbose лучшее, что вы можете сделать, это сделать белый фон прозрачным с

convert sample.bmp -transparent white alpha.png

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .