размеры картинки

Тема в разделе "LANGS.C", создана пользователем synoptick, 18 июн 2008.

  1. synoptick

    synoptick New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2008
    Сообщения:
    50
    подскажите что я делаю не так?
    //Вот моя функция которая выдергивает высоту\ширену картинки
    Код (Text):
    1. long Mult(unsigned char lsb, unsigned char msb){
    2.     return (lsb + (msb * 256) );
    3. }
    4. .........
    5. // тут я выдергиваю первые 10 байт файла
    6. fread(Data,sizeof(char),10,File);
    7. ..........// дальше классификация по определению типа гиф жпг, бмп, пнг....
    8. //и тут, вот к примеру для жпг выдергиваю необходимые значения
    9. Height = Mult(Data[1], Data[0]);
    10. Width = Mult(Data[1], Data[0]);
    11. printf("Height: %d\r\n", Height);
    12. printf("Width: %d\r\n", Width);
    Но в выводе у меня получается полная ерунда
    файлик с шириной\высотой 174x62
    а я получаю
    Height: 65496
    Width: 65496
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Читаешь не оттуда. :) Ты вообще код смотрел?
     
  3. ring4

    ring4 New Member

    Публикаций:
    0
    Регистрация:
    19 ноя 2006
    Сообщения:
    279
    synoptick
    толи банальный копипаст, без разбора полетов.
    либо просто еще слишком плохо пишешь на с
     
  4. synoptick

    synoptick New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2008
    Сообщения:
    50
    да то что не оттуда уже догадываюсь, а откуда нужно?
    Вообще опирался на этот сырец...
    http://www.rsdn.ru/Forum/?mid=78807
    Но классификацию изображений, их отличие сделал по своему(это точно правильно работает=)
     
  5. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Незнаю, незнаю.

    Изучай стандарт
    Находишь SOF и дальше с 5 и 7 смещения
    Код (Text):
    1. offset  size   name
    2.  0         2      SOF
    3. ...
    4.  5         2       Height
    5.  7         2       Width
     
  6. synoptick

    synoptick New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2008
    Сообщения:
    50
    а можно пример?
     
  7. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    в пустоту:
    ну вот так всегда..:
    сначала "что я делаю не так?", потом "подскажите где почитать", и в заключение обязательно "а можно пример?(между строк: блин, напишите за меня, я ведь за этим сюда пришёл, чотутнепонятного то =(( )"

    сложно ль f3 нажать и посмотреть на какой позиции у тебя АЕ, а на какой ЗЕ ?
    ёманарод!..
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    synoptick
    Ну дык ты сам привел пример в №4 посте.
     
  9. synoptick

    synoptick New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2008
    Сообщения:
    50
    Ладно, ок, пример есть)
    ->сложно ль f3 нажать и посмотреть на какой позиции у тебя АЕ, а на какой ЗЕ ?
    это в фаре?
    У меня линукс, в mc попробовал, нашел где-то в середине файла 3Е, а АЕ нет. А почему именно АЕ и 3Е?
     
  10. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    synoptick
    174=0xAE 62=0x3E :)
    Comer_ нужно на сайте макрос написать, чтобы на фразу "а можно пример?(" выдавал - "блин, напишите за меня, я ведь за этим сюда пришёл, чотутнепонятного то =(( ) (С) Comer_"
     
  11. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    synoptick ты так ничего не получиш.
    Надо отдельно анализировать формат изображения.
    К примеру JPEG с GIF ничего общего не имеет.
    Для JPEG размер в SOF записан как уже выше писали, плюс там порядок байт BigEndian.
    Бери спецификацию на формат и разбирайся.
    Фиговый это способ - для JPEG и TIFF 100% не подойдёт.
    У них сегментированная структура, так что таким образом ты код получиш который считает размеры только конкретного изображения.
    Возьмёш другой файл с изображением и обломаешся.
     
  12. synoptick

    synoptick New Member

    Публикаций:
    0
    Регистрация:
    21 фев 2008
    Сообщения:
    50
    ->Фиговый это способ - для JPEG и TIFF 100% не подойдёт.
    Почему?
    У меня определение типа по регулярке, и того 16 регулярок для фсех типов jpeg, 2 для тифф и еще две для гиф.
     
  13. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Что значит все типы jpeg? Формат вообще стандартизирован.
    А перестановок сегментов в нём можно сделать гораздо больше.
    Не знаю что ты там ищеш регулярными выражениями, но я вообще писал про то что читать размеры изображения по определённому смещению от начала файла неправильно.
    По крайней мере для JPEG и TIFF.
    Если не согласен - покажи код чтения размеров jpeg (или на пальцах расскажи как читаеш) и я тебе выложу jpeg на котором по тем смещениям на которые ты рассчитываеш размеров изображения не будет.