2017-02-08 5 views
-1

Also, ich habe ein Projekt auf Bild Steganographie für 32bit PNG-Bilder. Heute habe ich beschlossen, Unterstützung für 24-Bit-Bilder wie gif und bmp hinzuzufügen. Ich überprüfte ihre Bittiefe Eigenschaft, die 24bit sagt. Als ich einen Pixelwert extrahierte, bemerkte ich, dass es eine vorzeichenbehaftete 32-Bit-Ganzzahl ist. und die ersten 8 Bits (Alphakanal oder Transparenzbits) sind alle auf "1" gesetzt.Warum hat das 24-Bit-Tiefenbild 32-Bit-Werte für Pixel?

Warum werden 24-Bit-Bilder mit 32-Bit-Werten dargestellt?

PS: ich weiß, dass alle 1 in den ersten 8-Bits bedeuten, dass das Pixel keine Transparenz hat.

+2

Da gibt es keine 24-Bit-Integer-Typ. 'int', mit 32 Bits, ist das nächstgrößte. Und der zusätzliche Aufwand, die 4 24-Bit-Nummern in 3 32-Bit-'Int's zu packen, ist es einfach nicht wert. –

+0

@AndyTurner ok, schnelle Frage: Wenn die ersten 8 Bits auf 0 setzen, ändert sich dann die Pixelfarbe? oder wird es gleich aussehen? – NoobScript

+0

Hängt davon ab, wie Sie das Bild anzeigen. Der einfachste Weg, es herauszufinden, ist es einfach zu versuchen. –

Antwort

0

Siehe @ AndyTurner Kommentar.

Auch wie für meine Frage in den Kommentaren, ja das Bild sieht immer noch gleich aus, weil Änderungen an den ersten 8-Bit nicht vorgenommen werden können.

Es stellt sich heraus, dass Sie die ersten 8 Bit des (32-Bit-Wert) Pixels in 24-Bit-Bildern nicht ändern können. Änderungen an diesen Bits werden nicht beibehalten.

QUELLE:

getestet, indem die Werte ändern und das Bild speichern. das gespeicherte Bild hatte immer noch die gleichen ersten 8-Bit (alle 1) wie zuvor. Die Änderungen an den verbleibenden 24 Bits wurden jedoch beibehalten.

Verwandte Themen