Subversion Repositories Kolibri OS

Rev

Rev 5008 | Rev 5010 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5007 IgorA 1
2
3
библиотека для получения информации из формата Exif
4
5
45
46
 
47
48
 
49

Оглавление

50
    51
  • Вступление
  • 52
  • Функции
  • 53
      54
    • exif_get_app1
    • 55
    • exif_get_app1_tag
    • 56
    • exif_get_app1_child
    • 5009 IgorA 57
    • exif_get_app2
    • 5007 IgorA 58
      59
      60
    • Константы для функции exif_get_app1_child
    • 61
    • Таблица экспорта
    • 62
    • История
    • 63
      64
       
      65

      Вступление

      66

      Документация к свободной библиотеке exif.obj, для ОС Колибри.

      67
       Эта библиотека создана для просмотра информации находящейся в изображениях в формате Exif. Информация эта создается цифровыми фотокамерами и содержит разные параметры например такие как: название фирмы производителя, модель камеры, и т.д.

      68
       
      5009 IgorA 69

      Последнее обновление библиотеки 23.07.14.

      5007 IgorA 70
       
      71

      Функции

      72
       
      73

      Функции работают с указателями на структуры app1 или на app1_child. Пример структуры:

      74
      align 4
      75
      h_app1:
      76
      	dd 0 ;+0 указатель на количество тегов и на сами теги
      77
      	dd 0 ;+4 смещение добавляемое к указателям в тегах
      5008 IgorA 78
      	dw 0 ;+8 параметр, отвечающий за порядок следования байтов
      79
      	dw 0 ;+10 идентификатор для группы тегов
      5007 IgorA 80
       
      81

      exif_get_app1

      82

      Эта функция ищет начало Exif данных. Если они найдены то заполняется структура app1. Если не найдены, то первый параметр в структуре делается равным 0. Пример:

      83
      stdcall [exif_get_app1], [open_file],h_app1
      84
      ...
      85
      h_app1 dd 0,0,0
      86

      где open_file - указатель на данные файла изображения (пока поддерживаются только *.jpg и *.jpeg).

      87

      h_app1 - структура для запоминания начала Exif данных.

      88
       
      89

      exif_get_app1_tag

      90

      Заполняет текстовую строку именем параметра из Exif и его значением. Пример:

      91
      stdcall [exif_get_app1_tag], h_app1,3,txt_buf,80
      92
      ...
      93
      h_app1 dd 0,0,0
      94
      txt_buf rb 80
      95

      где h_app1 - структура заполенная в exif_get_app1 или в exif_get_app1_child.

      96

      3 - порядковый номер параметра.

      97

      txt_buf - текстовый буфер для заполнения.

      98

      80 - максимальная длина текста.

      99
       
      100

      exif_get_app1_child

      101

      Есть простые теги с информацией а есть теги указывающие на списки других тегов. Эта функция берет указатель на начало списка дочерних тегов. Пример:

      102
      stdcall [exif_get_app1_child], h_app1,h_child,0x8769
      103
      ...
      104
      h_app1  dd 0,0,0
      105
      h_child dd 0,0,0
      106

      где h_app1 - структура заполенная в exif_get_app1 или в exif_get_app1_child.

      107

      h_child - структура для заполения данных списка дочерних тегов.

      108

      0x8769 - код тега (находящегося в списке тегов h_app1), который является указателем на список других дочерних тегов.

      109

      В даном примере функция берет тег 0x8769 и пытается найти его в списке h_app1, если находит то заполняет по нему значения в структуре h_child. Далее к списку h_child можно применять функцию exif_get_app1_tag для взятия значения этих тегов. С помощью этой функции мы как бы переходим внутрь некой "папки" с тегами, которые сразу достать не можем.

      110
       
      5009 IgorA 111

      exif_get_app2

      112

      Эта функция ищет начало данных Exif.app2. Если они найдены то заполняется структура app2. Если не найдены, то первый параметр в структуре делается равным 0. Пример:

      113
      stdcall [exif_get_app2], h_app1,h_app2
      114
      ...
      115
      h_app1 dd 0,0,0
      116
      h_app2 dd 0,0,0
      117

      где h_app1 - структура c данными Exif.app1, предварительно заполненная функцией exif_get_app1.

      118

      h_app2 - структура для запоминания начала данных Exif.app2.

      119
       
      5007 IgorA 120

      Константы для функции exif_get_app1_child

      121

      Здесь приведены некоторые константы, которые могут использоватся как 3-й параметр для функции exif_get_app1_child. Эти константы обозначают специальные теги, которые содержат смещение на дочерние параметры, которые находятся в Exif.

      122

      0x8769

      123

      Обозначает дополнительные параметры Exif.

      124

      0x8825

      125

      Обозначает параметры GPS.

      126
       
      127

      Таблица экспорта

      128

      Пример таблицы экспорта, расчитанной на использование макроса @use_library_mem:

      129
      align 4
      130
      import_exif:
      131
      	exif_get_app1 dd sz_exif_get_app1
      132
      	exif_get_app1_tag dd sz_exif_get_app1_tag
      133
      	exif_get_app1_child dd sz_exif_get_app1_child
      5009 IgorA 134
      	exif_get_app2 dd sz_exif_get_app2
      5007 IgorA 135
      dd 0,0
      136
      	sz_exif_get_app1 db 'exif_get_app1',0
      137
      	sz_exif_get_app1_tag db 'exif_get_app1_tag',0
      5009 IgorA 138
      	sz_exif_get_app1_child db 'exif_get_app1_child',0
      139
      	sz_exif_get_app2 db 'exif_get_app2',0
      5007 IgorA 140
       
      141

      История

      142

      15.07.14 - первая версия библиотеки, пример использования.

      5009 IgorA 143

      23.07.14 - добавлена функция exif_get_app2.

      5007 IgorA 144
      145