подскажите что я делаю не так? //Вот моя функция которая выдергивает высоту\ширену картинки Код (Text): long Mult(unsigned char lsb, unsigned char msb){ return (lsb + (msb * 256) ); } ......... // тут я выдергиваю первые 10 байт файла fread(Data,sizeof(char),10,File); ..........// дальше классификация по определению типа гиф жпг, бмп, пнг.... //и тут, вот к примеру для жпг выдергиваю необходимые значения Height = Mult(Data[1], Data[0]); Width = Mult(Data[1], Data[0]); printf("Height: %d\r\n", Height); printf("Width: %d\r\n", Width); Но в выводе у меня получается полная ерунда файлик с шириной\высотой 174x62 а я получаю Height: 65496 Width: 65496
да то что не оттуда уже догадываюсь, а откуда нужно? Вообще опирался на этот сырец... http://www.rsdn.ru/Forum/?mid=78807 Но классификацию изображений, их отличие сделал по своему(это точно правильно работает=)
Незнаю, незнаю. Изучай стандарт Находишь SOF и дальше с 5 и 7 смещения Код (Text): offset size name 0 2 SOF ... 5 2 Height 7 2 Width
в пустоту: ну вот так всегда..: сначала "что я делаю не так?", потом "подскажите где почитать", и в заключение обязательно "а можно пример?(между строк: блин, напишите за меня, я ведь за этим сюда пришёл, чотутнепонятного то =(( )" сложно ль f3 нажать и посмотреть на какой позиции у тебя АЕ, а на какой ЗЕ ? ёманарод!..
Ладно, ок, пример есть) ->сложно ль f3 нажать и посмотреть на какой позиции у тебя АЕ, а на какой ЗЕ ? это в фаре? У меня линукс, в mc попробовал, нашел где-то в середине файла 3Е, а АЕ нет. А почему именно АЕ и 3Е?
synoptick 174=0xAE 62=0x3E Comer_ нужно на сайте макрос написать, чтобы на фразу "а можно пример?(" выдавал - "блин, напишите за меня, я ведь за этим сюда пришёл, чотутнепонятного то =(( ) (С) Comer_"
synoptick ты так ничего не получиш. Надо отдельно анализировать формат изображения. К примеру JPEG с GIF ничего общего не имеет. Для JPEG размер в SOF записан как уже выше писали, плюс там порядок байт BigEndian. Бери спецификацию на формат и разбирайся. Фиговый это способ - для JPEG и TIFF 100% не подойдёт. У них сегментированная структура, так что таким образом ты код получиш который считает размеры только конкретного изображения. Возьмёш другой файл с изображением и обломаешся.
->Фиговый это способ - для JPEG и TIFF 100% не подойдёт. Почему? У меня определение типа по регулярке, и того 16 регулярок для фсех типов jpeg, 2 для тифф и еще две для гиф.
Что значит все типы jpeg? Формат вообще стандартизирован. А перестановок сегментов в нём можно сделать гораздо больше. Не знаю что ты там ищеш регулярными выражениями, но я вообще писал про то что читать размеры изображения по определённому смещению от начала файла неправильно. По крайней мере для JPEG и TIFF. Если не согласен - покажи код чтения размеров jpeg (или на пальцах расскажи как читаеш) и я тебе выложу jpeg на котором по тем смещениям на которые ты рассчитываеш размеров изображения не будет.