Bonjour à toutes et à tous,
Y a t'il un moyen qui permet de détecter le poids d'un JPG et de l'afficher dans un TLabel.
Cette donnée ne se trouve pas dans l'Exif du fichier me semble t'il.
Pour la résolution c'est Ok.
Merci d'avance,
@+,
Cincap
Bonjour à toutes et à tous,
Y a t'il un moyen qui permet de détecter le poids d'un JPG et de l'afficher dans un TLabel.
Cette donnée ne se trouve pas dans l'Exif du fichier me semble t'il.
Pour la résolution c'est Ok.
Merci d'avance,
@+,
Cincap
Bonjour,
une image est un fichier...
la propriété FileSize ne fonctionne t-il pas ?
Je n'ai pas Delphi avec moi pour vérifier.
André
Dans la Faq: http://delphi.developpez.com/faq/?pa...regaliteimages
Avec cela tu as une méthode en MemoryStream
@ andreditdd, merci de ta réponse, j'ai essayé un peu de tout, en fait c'est l'image après resize qui m'importe.
Je vais vérifier le lien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 ................. BMP.Assign(image1.picture.bitmap); jpgbis.Assign(BMP); JPGbis.CompressionQuality := 80; {75..85 : best ratio Size/Quality} JPGbis.ProgressiveEncoding := true; {True : good for web or slow computer} jpgbis.Savetostream(astream); //içi avec soit avec un Tlabel ou TEdit .................
@+,
Cincap
cincap, je suis au boulot jusque demain et ne possede pas Delphi sur cette machine.
A la maison j'ai une application que j'ai coder qui fait cela et donc si demain soir tu es encore en questionnement sur le sujet je pourrai mieux te dépanner.
André
@ andreditdd, merci de ta réponse, j'ai testé ceci :
Cela me donne 44842 pour un fichier de 141K
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 function FileSize(FileName: string): Int64; var SearchRec: TSearchRec; begin if FindFirst(FileName, faAnyFile, SearchRec) = 0 then // if found //SearchRec.Size property works, but only for files less than 2GB Result := Int64(SearchRec.FindData.nFileSizeHigh) shl Int64(32) + // calculate the size Int64(SearchRec.FindData.nFileSizeLow) else Result := 0; FindClose(SearchRec); // close the find end; procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then Label1.Caption := 'File size: '+IntToStr(FileSize(OpenDialog1.Filename)); end;
@+,
Cincap








Mis en vrac mais avec quelques modifications, ça marche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 var size : Extended; Size:=getfilesize(ouvrir.FileName)div 1024; lTaille.Caption:=copy(floatToStr(Size),0,4)+' ko';
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 function Tprinc.GetFileSize(const APath: string): int64; var Sr : TSearchRec; begin if FindFirst(APath,faAnyFile,Sr)=0 then try Result := Int64(Sr.FindData.nFileSizeHigh) shl 32+Sr.FindData.nFileSizeLow; finally FindClose(Sr); end else Result := 0; end;
Bonjour à toutes et à tous,
@ Duan, merci de ta réponse, le problème pour moi c'est que je dois utiliser "Filedest" qui est une variable de type "String" et qui indique le chemin complet de mon image finale pour laquelle j'aurai aimé savoir sa taille (en Koctet).
Type d'erreur = "Types incompatibles Cardinal et String"
A quoi correspond "Ouvrir Filename" = TOpenDialog si oui, cela ne fonctionne pas non plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 ................. BMP.Assign(image1.picture.bitmap); jpgbis.Assign(BMP); JPGbis.CompressionQuality := 80; {75..85 : best ratio Size/Quality} JPGbis.ProgressiveEncoding := true; {True : good for web or slow computer} jpgbis.Savetostream(astream); aStream.SaveToFile(PChar(filedest)) ;//Içi l'image est bien sauvée dans le dossier adéquat. Size:=getfilesize(filedest) div 1024; Label1.Caption := copy(floatToStr(Size),0,4)+' ko'; .................
Edit : Désolé, une petite erreur dans la mise en place de la fonction.
Seul problème, pour une image de 143 K, le label m'affiche 43K
@+,
Cincap
@ Duan, après vérification, je devais tenir compte que j'utilisais Seven 64bits et que certains dossiers ne sont que fictif, tout est ok et ta fonction correspond à mon souhait.
Merci à toi et à andreditdd.
Ce topic est considéré comme résolut.
@+,
Cincap
@ tous, encore un petit truc qui me chiffonne, comme je récupère le poids de mon image dans un TLabel, est t'il possible de lui attribuer une condition au cas ou le poids dépasserait 180 Ko ou dois je prendre un autre composant.
Edit : Tout est rentré dans l'ordre merci à tous.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if (LTaille.Caption = >180) then showmessage('Pas correct');
@+,
Cincap
Partager