2017-01-16 3 views
1

Как сделать, чтобы получить размеры изображения GIF из массива необработанных байтов?Как получить размер размера изображения GIF из массива байтов в AS3?

Это вопрос related. Я пытаюсь найти, есть ли строка байтов, которые содержат ширину и высоту.

Я нашел this страницу в формате GIF, но я не уверен, как ее расшифровать. Похоже, позиция 6 и позиция 8 содержат ширину и высоту?

ответ

5

Я думаю, что это то, что вы ищете: http://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp

Bytes 6-7 (0 на основе индекса) представляют собой ширину и байты 8-9 представляют высоту. В этом случае:

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; 

Или же просто использовать readShort для получения значений два байта (16-бит) без битового сдвига << ...

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

Конечно, это должно быть на самом деле проверяется первым если подпись в байте 0 является GIF, либо возвращает ошибку. – Vesper

+1

@Vesper, хорошая точка, но ... Заголовок может быть правильным, но остальная часть данных повреждена. Единственный способ быть на 100% уверенным в том, что на самом деле Loader.loadBytes (source), а затем мы можем просто прочитать (Loader.content как Bitmap) .width и .height, что, вероятно, убивает всю точку для OP. – Organis

+0

@ 1.21gigawatts, спасибо, я забыл о неподписанном, глупом мне. – Organis

Смежные вопросы