REDIMENSIONNER UNE IMAGE JPEG

Signaler
Messages postés
3
Date d'inscription
vendredi 7 avril 2006
Statut
Membre
Dernière intervention
8 avril 2006
-
Messages postés
4
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
15 juillet 2010
-
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

Messages postés
4
Date d'inscription
jeudi 16 août 2007
Statut
Membre
Dernière intervention
15 juillet 2010

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;
Messages postés
2
Date d'inscription
mercredi 3 septembre 2003
Statut
Membre
Dernière intervention
6 septembre 2007

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.
Messages postés
2
Date d'inscription
jeudi 19 août 2004
Statut
Membre
Dernière intervention
11 mai 2011

Bonjour
quelqu'un sait si on peut faire la meme chose SANS passer par un bitmap ?
merci
Messages postés
16
Date d'inscription
vendredi 7 avril 2006
Statut
Membre
Dernière intervention
13 juillet 2006

Merci ;)!
Afficher les 7 commentaires