SAUVEGARDER UN BITMAP EN JPEG AVEC DONNÉES EXIF ET VIGNETTE

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 14 oct. 2007 à 06:05
cs_Ricquet Messages postés 20 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 30 novembre 2010 - 30 déc. 2008 à 13:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44375-sauvegarder-un-bitmap-en-jpeg-avec-donnees-exif-et-vignette

cs_Ricquet Messages postés 20 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 30 novembre 2010
30 déc. 2008 à 13:42
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
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
13 août 2008 à 03:17
A savoir que Windows utilise un emplacement différent pour le stockage de son champ "Commentaires"...
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
14 oct. 2007 à 08:21
Salut F0XI et merci pour ces fonctions en assembleur.
A +
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
14 oct. 2007 à 06:05
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.
Rejoignez-nous