2010-05-13 3 views
5

Искал через сеть, не смог найти способ чтения/записи метаданных файла с использованием C или C++, однако для этого есть инструменты, а также есть API в C# и Java для этого. Но я хочу сделать это с нуля на C или C++.Чтение/запись метаданных файла с использованием C/C++

Например, метаданные для чтения/записи изображений.

Обнаружили, что есть три формата, в которых метаданные записываются в файлы. EXIF, IPTC и XMP.

Спасибо.

+0

Неясно, какую помощь вы хотите. –

ответ

4

Зачем вам это нужно с нуля?

Во всяком случае, вам нужна документация, и вы также можете посмотреть существующую библиотеку для получения помощи, особенно если у вас нет опыта в этой области.

Вы попробовали Exiv?

Exiv2 - это библиотека C++ и команда утилита линии для управления метаданными изображений. Он обеспечивает быструю и легкую запись и позволяет писать метаданные изображений Exif, IPTC и XMP в различных форматах. Exiv2 доступен в виде бесплатного программного обеспечения и с коммерческой лицензией и является , используемым во многих проектах.

+0

Не хотите использовать какую-либо библиотеку. Спасибо за информацию о библиотеке в любом случае. –

+0

Привет, у Exif есть эквивалент в C? Похоже, он имеет только C++ API. – Arno

2

Существуют различные решения. Один из них заключается в определении структуры (но убедитесь, что выравнивания полей верны), затем прочитайте данные и используйте структуру для доступа к полям. Банальный пример:

struct header { 
    uint32_t len; 
    unsigned char type; 
    char name[16]; 
}; 

struct header hdr; 

read(fd,&hdr,sizeof(hdr)); 

... access your fields using the structure ... 

тема является немного более сложным, чем это;) Но так как вы не указали гораздо больше, я думаю, что это еще может немного помочь.

+0

Спасибо за структуру. Но вы понимаете, что все не так просто! –