Taille d'une Image jpeg pour fichier binaire.

Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 - 13 juin 2006 à 16:44
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 - 14 juin 2006 à 13:12
Salut à tous.

Vous allez bien?
Moi, je rame sur un petit truc depuis pas mal de temps...

Voilà, j'ai besoin de connaître la taille en octets d'une image JPEG qui se trouve dans un TImage afin de la sauvergarder dans un fichier binaire...
J'utilise un truc qui fonctionne, mais qui me semble un peu barbare...
Quelqu'un connaîtrait-il une alternative plus élégante?
Voici ma bidouille:


uses jpeg;




procedure TForm1.Button1Click(Sender: TObject);
var
    PhotoJPG : TjpegImage;
    Strm           : TMemoryStream;
begin
  PhotoJPG := TjpegImage.Create;
  Strm:=TMemoryStream.Create;
  try
    PhotoJPG.Assign(Image1.Picture);
    PhotoJPG.SaveToStream(Strm);
    Edit1.text :=  IntToStr(Strm.Size);  // Taille de l'image.
  finally
    Strm.Free;
    PhotoJPG.Free;
  end;
end;




Merci de votre aide...

5 réponses

Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
13 juin 2006 à 17:08
Je précise ma question:
je pensais pouvoir utilser la fonction SizeOf...
Mais SizeOf (quoi?)
Je crois avoir tout essayé...  :s
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
13 juin 2006 à 23:14
Moi personnellement, j'aurais fait comme toi...
Après, si quelqu'un à une autre méthode plus rapide, je ne suis pas contre !

@+
Nico {www.ni69.info}

<hr size="2" width="100%" />
N'oubliez pas de cliquer sur Réponse Acceptée lorsque la réponse vous convient !
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
14 juin 2006 à 04:35
mmm le probleme avec les images JPeg, c'est qu'on peu pas determiné tel quel la taille finale du fichier comme avec les BMP par exemple.

donc ta methode n'est pas mauvaise, bien qu'elle ne prenne pas en compte la qualitée de compression.
a mon avis tu dois avoir une marge d'erreur de quelques centaines d'octets a chaque fois.

mais bon, c'est ce qu'il y a de mieux a faire, avec le TJpegImage, d'autres methodes serait tout aussi longue voir beaucoup plus.
0
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
14 juin 2006 à 08:52
Pour un exemple de calcul de taille avec prise en compte de la qualité de compression, vous pouvez toujours aller voir ma source EasyCompressJpg...

@+
Nico {www.ni69.info}

<hr size="2" width="100%" />
N'oubliez pas de cliquer sur Réponse Acceptée lorsque la réponse vous convient !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
14 juin 2006 à 13:12
Bon. S'il n'y a pas mieux, j'en resterai là...
Merci de vos réponses, en tout cas...

Pour ceux que ça intéresse, voici la procédure qui prend en compte le taux de compression:




procedure TailleJPEG;
    var
        PhotoJPG : TjpegImage;
        Strm           : TMemoryStream;
  begin
  PhotoJPG := TjpegImage.Create;
  Strm           :=TMemoryStream.Create;
  try
    PhotoJPG.Assign(Image1.Picture.Bitmap);
    PhotoJPG.CompressionQuality := 100; // qualité de 1 à 100...
    PhotoJPG.Compress;
    PhotoJPG.SaveToStream(Strm);
    Edit1.text : = Inttostr(Strm.Size div 1024)+' kb'; // taille de l'image !
  finally
    Strm.Free;
    PhotoJPG.Free;
  end;
end;
0
Rejoignez-nous