watermodel
Messages postés3Date d'inscriptionvendredi 7 avril 2006StatutMembreDernière intervention 8 avril 2006
-
8 avril 2006 à 16:04
oumaya2007
Messages postés4Date d'inscriptionjeudi 16 août 2007StatutMembreDernière intervention15 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.
oumaya2007
Messages postés4Date d'inscriptionjeudi 16 août 2007StatutMembreDernière intervention15 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és2Date d'inscriptionmercredi 3 septembre 2003StatutMembreDerniè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és2Date d'inscriptionjeudi 19 août 2004StatutMembreDernière intervention11 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és16Date d'inscriptionvendredi 7 avril 2006StatutMembreDernière intervention13 juillet 2006 13 juin 2006 à 10:07
Merci ;)!
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 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és16Date d'inscriptionvendredi 7 avril 2006StatutMembreDernière intervention13 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és3Date d'inscriptionvendredi 7 avril 2006StatutMembreDernière intervention 8 avril 2006 8 avril 2006 à 16:04
Chapeau
Avec tes sources j'ai l'impression de devenir plus intelligent.
28 juin 2011 à 14:50
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;
12 févr. 2007 à 09:31
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.
14 août 2006 à 09:43
quelqu'un sait si on peut faire la meme chose SANS passer par un bitmap ?
merci
13 juin 2006 à 10:07
12 juin 2006 à 23:31
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.
12 juin 2006 à 10:04
8 avril 2006 à 16:04
Avec tes sources j'ai l'impression de devenir plus intelligent.