Sauvegarder un bitmap en jpeg avec données exif et vignette

Soyez le premier à donner votre avis sur cette source.

Vue 6 343 fois - Téléchargée 703 fois

Description

La classe TImageMetaData permet de sauvegarder un bitmap en format Jpeg avec incorporation de données Exif et d'une vignette.
Les données Exif peuvent être créées de toutes pièces (ex : ajout d'une description, d'une date...) ou reprises du fichier original (Jpeg ou Tiff).
Dans la démo, seuls des fichiers jpeg peuvent être ouverts.
Les données Exif ne sont pas complètes, je n'ai repris que celles que je trouvais intéressantes pour un photographe. Il est cependant très facile d'en ajouter d'autres.

Merci d'avance pour vos commentaires(constructifs) ou vos demandes d'information.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
20
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
30 novembre 2010

Merci pour la clarté du prog favorisant l'utilisation de l'unité ImageMetaData.
Pour info, j'ai ajouté la ligne suivante à la procédure SaveToJpeg afin d'éviter plantage avec grosses images :
JpegImage.CompressionQuality:= 80; SaveOK := false;
with JpegImage do
While not saveOK and (CompressionQuality > 30) do
try SaveToStream(ImageStream);
SaveOK := true;
Except CompressionQuality := CompressionQuality -20 end;

Je me lance dans activité diaporamas, si intérréssé / partenariat, me retrouver sur site : http://pagesperso-orange.fr/Edialbum/index.htm

Eric
Messages postés
1418
Date d'inscription
samedi 12 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2010
13
A savoir que Windows utilise un emplacement différent pour le stockage de son champ "Commentaires"...
Messages postés
418
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
26 novembre 2013
3
Salut F0XI et merci pour ces fonctions en assembleur.
A +
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
juste a titre d'exemple on peu ameliorer les fonctions "swap" par une seule ligne de code pour les entiers 16 et 32bits, 4 lignes pour les entiers 64bits :

function BSwap16(const a: word): word;
asm
xchg al, ah;
end;

function BSwap32(const a: integer): integer;
asm
bswap eax;
end;

function BSwap64(const a: int64): int64;
asm
mov edx, [ebp+$08];
mov eax, [ebp+$0C];
bswap eax;
bswap edx;
end;

bien que ça ne jouera pas trop sur les performances, ça reste toujours interressants de savoir profiter des instructions "rapide" pour ce genre de manip.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.