прозрачность на 32-битном BMP ничего не делает - PullRequest
0 голосов
/ 07 января 2020

Этот 32-битный BMP https://drive.google.com/open?id=1thySBsggtdihd3LByiAwQwZmVo1lzZfl имеет прозрачность. Но по какой-то причине ни один из моих просмотрщиков / редакторов изображений не показывает прозрачность.

Как я могу исправить этот bmp?

1 Ответ

0 голосов
/ 07 января 2020

Ваш файл BMP не закодирован правильно для поддержки прозрачности.

Согласно следующей записи :

В зависимости от метода сжатия, метод RGB по умолчанию поддерживает 24-битный цвет, но сжатие BITFIELDS поддерживает 32- битовый цвет (24-битный + альфа-канал).

Согласно Википедии :
Для BI_BITFIELDS адрес заголовка 1Eh должен иметь значение 3.
И адреса 36h, 3Ah, 3Eh, 42h значения определяют маску:

36h 4 00 00 FF 00 00FF0000 Red channel bit mask (BI_BITFIELDS)
3Ah 4 00 FF 00 00 0000FF00 Green channel bit mask (BI_BITFIELDS)
3Eh 4 FF 00 00 00 000000FF Blue channel bit mask (BI_BITFIELDS)
42h 4 00 00 00 FF FF000000 Alpha channel bit mask

Вы можете проанализируйте Метаданные вашего изображения онлайн здесь

Результат анализа вашего файла, Сжатие Нет :
File Name: BLUE_CLOSEBUTTON_BMP.bmp
File Size: 14 kB
...
Compression: None

Ваш файл BMP (глубина в битах составляет 32 бита, но нет прозрачности):
enter image description here


Я использовал GIMP для сохранения BMP с прозрачностью.

Результат анализа, Сжатие Битовые поля :

File Name: 1.bmp
File Size: 14 kB
Compression: Bitfields
...
Red Mask: 0xff000000
Green Mask: 0x00ff0000
Blue Mask: 0x0000ff00
Alpha Mask: 0x000000ff

Вот BMP с прозрачными полосами (файл был автоматически преобразован в PNG сайтом):
enter image description here


Проверьте, действительно ли ваше изображение имеет прозрачность:

<img src="https://i.stack.imgur.com/NCdOW.png" style="background-color:blue;" />

Проверьте, имеет ли изображение, которое я разместил, прозрачность:

<img src="https://i.stack.imgur.com/urljs.png" style="background-color:blue;" />
...