Subversion Repositories Kolibri OS

Rev

Rev 5010 | 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
    • 6322 IgorA 55
    • exif_get_tag
    • 56
    • exif_get_tag_id
    • 57
    • exif_get_child
    • 5009 IgorA 58
    • exif_get_app2
    • 5007 IgorA 59
      60
      6322 IgorA 61
    • Константы для функции exif_get_child
    • 5007 IgorA 62
    • Таблица экспорта
    • 63
    • История
    • 64
      65
       
      66

      Вступление

      67

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

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

      69
       
      5009 IgorA 70

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

      5007 IgorA 71
       
      72

      Функции

      73
       
      74

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

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

      exif_get_app1

      83

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

      84
      stdcall [exif_get_app1], [open_file],h_app1
      85
      ...
      5010 IgorA 86
      h_app1 rb 14
      5007 IgorA 87

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

      88

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

      89
       
      6322 IgorA 90

      exif_get_tag

      5007 IgorA 91

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

      6322 IgorA 92
      stdcall [exif_get_tag], h_app1,3,txt_buf,80
      5007 IgorA 93
      ...
      5010 IgorA 94
      h_app1  rb 14
      5007 IgorA 95
      txt_buf rb 80
      6322 IgorA 96

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

      5007 IgorA 97

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

      98

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

      99

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

      100
       
      6322 IgorA 101

      exif_get_tag_id

      102

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

      103
      stdcall [exif_get_tag_id], h_app1,0x010f,txt_buf,80
      104
      ...
      105
      h_app1  rb 14
      106
      txt_buf rb 80
      107

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

      108

      0x010f - код тега в котором содержится название производителя камеры.

      109

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

      110

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

      111
       
      112

      exif_get_child

      5007 IgorA 113

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

      6322 IgorA 114
      stdcall [exif_get_child], h_app1,h_child,0x8769
      5007 IgorA 115
      ...
      5010 IgorA 116
      h_app1  rb 14
      117
      h_child rb 14
      6322 IgorA 118

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

      5007 IgorA 119

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

      120

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

      6322 IgorA 121

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

      5007 IgorA 122
       
      5009 IgorA 123

      exif_get_app2

      124

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

      125
      stdcall [exif_get_app2], h_app1,h_app2
      126
      ...
      5010 IgorA 127
      h_app1 rb 14
      128
      h_app2 rb 14
      5009 IgorA 129

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

      130

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

      131
       
      6322 IgorA 132

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

      133

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

      5007 IgorA 134

      0x8769

      135

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

      136

      0x8825

      137

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

      138
       
      139

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

      5010 IgorA 140

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

      5007 IgorA 141
      align 4
      142
      import_exif:
      143
      	exif_get_app1 dd sz_exif_get_app1
      5009 IgorA 144
      	exif_get_app2 dd sz_exif_get_app2
      6322 IgorA 145
      	exif_get_tag dd sz_exif_get_tag
      146
      	exif_get_tag_id dd sz_exif_get_tag_id
      147
      	exif_get_child dd sz_exif_get_child
      5007 IgorA 148
      dd 0,0
      149
      	sz_exif_get_app1 db 'exif_get_app1',0
      6322 IgorA 150
      	sz_exif_get_app2 db 'exif_get_app2',0
      151
      	sz_exif_get_tag db 'exif_get_tag',0
      152
      	sz_exif_get_tag_id db 'exif_get_tag_id',0
      153
      	sz_exif_get_child db 'exif_get_child',0
      5007 IgorA 154
       
      155

      История

      156

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

      5009 IgorA 157

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

      6322 IgorA 158

      11.03.16 - добавлена функция exif_get_tag_id, изменены названия некоторых функций (убрано app1 потому что они могут работать не только с app1).

      5007 IgorA 159
      160