2017-02-08 7 views
-1

Итак, я сделал проект по стеганографии изображений для 32-битных изображений PNG. Сегодня я решил добавить поддержку 24-битных изображений, таких как gif и bmp. Я проверил их свойство битовой глубины, которое говорит 24 бит. Когда я извлек значение пикселя, я заметил, что это подписанное 32-битное целое число. и первые 8-битовые (альфа-каналы или биты передачи) установлены на «1».Почему изображение с 24-разрядной глубиной имеет 32-битные значения для пикселей?

Почему 24-битные изображения представлены с 32-битными значениями?

PS: Я знаю, что все 1 в первых 8 бит означают, что пиксель не имеет прозрачности.

+2

Поскольку нет 24-битного целочисленного типа. 'int', с 32 битами, является следующим самым большим. И лишнее усилие упаковки 4 24-битных чисел на 3 32-битных 'int' просто не стоит. –

+0

@ AndyTurner ok, быстрый вопрос: если установить первые 8 бит на 0, то изменится ли цвет пикселя? или он будет выглядеть одинаково? – NoobScript

+0

Зависит от того, как вы показываете изображение. Самый простой способ узнать это просто попробовать. –

ответ

0

См. Комментарий @ AndyTurner.

Кроме того, что касается моего вопроса в комментариях, да, изображение все равно выглядит так же, потому что изменения не могут быть сделаны в первые 8 бит.

Оказывается, вы не можете изменить первые 8 бит (32-битного значения) пикселя в 24-битных изображениях. любые изменения, внесенные в эти биты, не будут сохраняться.

ИСТОЧНИК:

тестировал путем изменения значений и сохранения изображения. сохраненное изображение по-прежнему имело те же первые 8 бит (все 1), что и раньше. Однако изменения оставшихся 24 бит сохранялись.