Оглавление

Вступление

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

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

Функции

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

align 4
h_app1:
	dd 0 ;+0 указатель на количество тегов и на сами теги
	dd 0 ;+4 смещение добавляемое к указателям в тегах
	dw 0 ;+8 параметр, отвечающий за порядок следования байтов
dw 0 ;+10 идентификатор для группы тегов

exif_get_app1

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

stdcall [exif_get_app1], [open_file],h_app1
...
h_app1 dd 0,0,0

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

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

exif_get_app1_tag

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

stdcall [exif_get_app1_tag], h_app1,3,txt_buf,80
...
h_app1 dd 0,0,0
txt_buf rb 80

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

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

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

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

exif_get_app1_child

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

stdcall [exif_get_app1_child], h_app1,h_child,0x8769
...
h_app1  dd 0,0,0
h_child dd 0,0,0

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

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

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

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

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

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

0x8769

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

0x8825

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

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

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

align 4
import_exif:
	exif_get_app1 dd sz_exif_get_app1
	exif_get_app1_tag dd sz_exif_get_app1_tag
	exif_get_app1_child dd sz_exif_get_app1_child
dd 0,0
	sz_exif_get_app1 db 'exif_get_app1',0
	sz_exif_get_app1_tag db 'exif_get_app1_tag',0
	sz_exif_get_app1_child db 'exif_get_app1_child',0

История

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