2017-01-16 1 views

Antwort

5

Ich denke, das ist das, was Sie suchen: http://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp

Bytes 6-7 (0-basierender Index) Breite repräsentieren und Bytes 8-9 Höhe darstellen. In diesem Fall:

var source:ByteArray; 
var aHeight:int; 
var aWidth:int; 

source.position = 6; 

aWidth = source.readUnsignedByte(); 
aWidth += source.readUnsignedByte() << 8; 

aHeight = source.readUnsignedByte(); 
aHeight += source.readUnsignedByte() << 8; 

Oder alternativ verwendet nur readShort für immer Zwei-Byte-Werte (16-Bit), ohne das Bit-Verschiebung << ...

aWidth = source.readShort(); 
aHeight = source.readShort(); 
+0

Natürlich sollte es eigentlich zuerst überprüft werden wenn die Signatur bei Byte 0 ein GIF-Wert ist, oder andernfalls einen Fehler zurückgibt. – Vesper

+1

@Vesper, guter Punkt, aber ... Der Header könnte korrekt sein, aber der Rest der Daten beschädigt. Der einzige Weg, um 100% sicher zu sein, ist tatsächlich Loader.loadBytes (source), und dann können wir einfach (Loader.content als Bitmap) .width und .height lesen, was wahrscheinlich den ganzen Punkt für OP abtötet. – Organis

+0

@ 1.21gigawatts, danke, ich habe vergessen unsigniert, albern mich. – Organis

Verwandte Themen