Определите разрешение изображения и введите его (без фактического декодирования) в WP7 / Silverlight - PullRequest
3 голосов
/ 26 февраля 2011

Как определить разрешение (ширина x высота) и тип (gif, jpeg, png, bmp и т. Д.) Изображения из потока (или байтового массива) без затрат на декодирование всего изображения?

Я знаю, что это можно сделать, просто прочитав заголовки. Просто интересно, существует ли такой код или библиотека.

Ответы [ 2 ]

2 голосов
/ 26 февраля 2011

В дополнение к Jpeg информации, предоставленной в ответе @Leon ссылки на ..

GIF файлы начинаются с кодировки ASCII для "GIF89a", так что выможет использовать эту подпись для определения типа файла.Сразу же за ними следуют ширина и высота, оба значения Int16 с использованием байтового порядка с прямым порядком байтов.

PNG файлы начинаются со значения байта 89, затем следует кодировка ASCII для «PNG»на 4 других байта.Сразу после этого (со смещением 8) значения ширины и высоты имеют ширину 4 байта (я не уверен в порядке следования байтов).

BMP файлы начинаются с кодировки ASCIIдля "БМ".По смещению 18 есть значение Int32, определяющее ширину, а по смещению 22 высота будет использовать порядок байтов с прямым порядком байтов.

Вооружившись этой информацией, вы сможете написать немного кода для чтения первых 26байты файлового потока и от этого определяют тип файла вместе с шириной и высотой.

1 голос
/ 26 февраля 2011

Я не знаю ни одной библиотеки, но есть частичный ответ здесь на стеке потока. Ответ SemiColon содержит образец, который извлекает из заголовка тип изображения, вы легко переделываете его, чтобы также извлечь размеры для каждого типа.

HTH Леон

...