2010-05-13 3 views
5

Recherche par le réseau, impossible de lire/écrire des métadonnées de fichiers en C ou C++, cependant, il existe des outils disponibles pour cela, et il existe aussi des API en C# et Java pour le faire. Mais je veux le faire à partir de zéro en C ou C++.Lecture/écriture des métadonnées de fichiers en utilisant C/C++

Par exemple, lire/écrire des métadonnées d'image.

Nous avons découvert qu'il existe trois formats dans lesquels les métadonnées sont écrites dans des fichiers. EXIF, IPTC et XMP.

Merci.

+0

Il n'est pas clair quel type d'aide vous voulez. –

Répondre

4

Pourquoi voudriez-vous le faire à partir de zéro?

Quoi qu'il en soit, vous avez besoin de documentation et vous pouvez également consulter une bibliothèque existante pour obtenir de l'aide, en particulier si vous n'avez aucune expérience dans le domaine. Avez-vous essayé Exiv?

Exiv2 est une bibliothèque C++ et une ligne de commande utilitaire pour gérer les métadonnées de l'image. Il fournit une lecture rapide et facile et accès en écriture aux métadonnées Exif, IPTC et XMP d'images dans divers formats. Exiv2 est disponible en tant que logiciel libre et avec une licence commerciale, et est utilisé dans de nombreux projets.

+0

Vous ne voulez utiliser aucune bibliothèque. Merci pour les informations sur la bibliothèque de toute façon. –

+0

Salut, est-ce que Exif a un équivalent en C? Il semble qu'il a seulement une API C++. – Arno

2

Il existe différentes solutions. L'une consiste à définir une structure (mais assurez-vous que les alignements de champs sont corrects), puis à lire les données et à utiliser la structure pour accéder aux champs. Trivial exemple:

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 ... 

Le sujet est un peu plus complexe que cela;) Mais puisque vous ne l'avez pas spécifié beaucoup plus je pense que cela peut encore aider un peu.

+0

Merci pour la structure. Mais vous vous rendez compte que ce n'est pas si simple! –