REDIMENSIONNER UNE IMAGE JPEG

watermodel Messages postés 3 Date d'inscription vendredi 7 avril 2006 Statut Membre Dernière intervention 8 avril 2006 - 8 avril 2006 à 16:04
oumaya2007 Messages postés 4 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 15 juillet 2010 - 28 juin 2011 à 14:50
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/20331-redimensionner-une-image-jpeg

oumaya2007 Messages postés 4 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 15 juillet 2010
28 juin 2011 à 14:50
Bonjour
Un petite amélioration :

procedure ResizeJpeg(srcJpeg, destJpeg: TJpegImage; const MaxSize: integer);
var
Bitmap ,Bmp2: TBitmap;
Ratio: double;
begin
{Si l'image est vide ou la largeur est nulle, sortir}
if (srcJpeg.Empty) or (MaxSize <= 0) then
Exit;
{ Création d'un TBitmap le temps de redimensionner l'image }
Bitmap := TBitmap.Create;
Bmp2 := TBitMap .Create;
try
// Convertion du jpg en Bmp
Bmp2.Width := srcJpeg.Width ;
Bmp2.Height := srcJpeg.Height ;
Bmp2.PixelFormat:=pf24bit;
Bmp2.Canvas.Draw(0,0,srcJpeg);

{ Détermination du cadrage Vertical ou horizontal}
Ratio := srcJpeg.Height / srcJpeg.Width;
if Ratio > 1 then
//Cadrage vertical
Bitmap.Width := Round(MaxSize / Ratio)
else
//cadrage horizontal
Bitmap.Width := MaxSize;
Bitmap.Height := Round(Bitmap.Width * Ratio);
// Réduction d'image avec filtre
Bitmap.PixelFormat:=pf24bit;
//stretch
ImgStretch(Bmp2, Bitmap,ResampleFilters[5].Filter, ResampleFilters[5].Width);
{ //Copie de l'image avec redimensionnement sur le canvas du TBitmap
Bitmap.Canvas.StretchDraw(Bitmap.Canvas.ClipRect, srcJpeg); }
{Il ne reste plus qu'à copier l'image redimensionnée dan le Jpeg à retourner}
destJpeg.Assign(Bitmap);
finally
Bitmap.Free;
Bmp2.Free;
end;
end;
cs_pirlouis Messages postés 2 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 6 septembre 2007
12 févr. 2007 à 09:31
Bonjour à tous,

Pour ma part j'utilise cette procédure pour réduire une image JPEG vers JPEG.

Cela fonctionne très bien mis à part le fait que l'image se déteriore.

En voulant utiliser cette procédure, je voulait éviter d'utiliser un autre outil tel qu'une vieille version de Paint Shop Pro 7. Ce tools me réduit l'image sans déterioration distinctive.

Exemple une photo JPEG (1704 * 2272) de taille 1.182.445 bytes après réduction JPEG (187 * 250) j'obtiens 24.835 bytes. Avec la procédure citée plus haut j'ai 9.806 bytes.

Est-ce que quelqu'un aurait une idée pour éviter cette déterioration.

Merci d'avance pour vos idées.
loran_g Messages postés 2 Date d'inscription jeudi 19 août 2004 Statut Membre Dernière intervention 11 mai 2011
14 août 2006 à 09:43
Bonjour
quelqu'un sait si on peut faire la meme chose SANS passer par un bitmap ?
merci
Descom_q Messages postés 16 Date d'inscription vendredi 7 avril 2006 Statut Membre Dernière intervention 13 juillet 2006
13 juin 2006 à 10:07
Merci ;)!
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 33
12 juin 2006 à 23:31
Exact Descom_q : j'ai omis de préciser qu'il fallait JPEG dans la clause Uses.
Quand pareil cas se produit, place le curseur sur le nom de la classe recherchée et appuie sur la touche F1. Dans l'aide en ligne, tu trouveras alors, en début de page, quelque chose ressemblant à ceci :
Unité
Jpeg

C'est toujours bon à savoir car on ne peut pas toujours se rappeler dans quelle unité est déclarée telle ou telle classe.
Descom_q Messages postés 16 Date d'inscription vendredi 7 avril 2006 Statut Membre Dernière intervention 13 juillet 2006
12 juin 2006 à 10:04
Salut je voulait reprendre un bout de ton code mais quelques mots ne passent pas genre TjpegImage serai-ce qu'il me manque des Uses? Quells sont-ils? En espèrant une réponse merci d'avance et bonne journée.
watermodel Messages postés 3 Date d'inscription vendredi 7 avril 2006 Statut Membre Dernière intervention 8 avril 2006
8 avril 2006 à 16:04
Chapeau


Avec tes sources j'ai l'impression de devenir plus intelligent.