IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Détecter le poids d'un JPG !


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 591
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 591
    Par défaut Détecter le poids d'un JPG !
    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

  2. #2
    Membre éclairé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Par défaut
    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é

  3. #3
    Membre éclairé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Par défaut
    Dans la Faq: http://delphi.developpez.com/faq/?pa...regaliteimages

    Avec cela tu as une méthode en MemoryStream

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 591
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 591
    Par défaut
    @ 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.

    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
     
    .................
    Je vais vérifier le lien.

    @+,
    Cincap

  5. #5
    Membre éclairé
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Février 2006
    Messages
    537
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2006
    Messages : 537
    Par défaut
    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é

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 591
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 591
    Par défaut
    @ andreditdd, merci de ta réponse, j'ai testé ceci :

    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;
    Cela me donne 44842 pour un fichier de 141K

    @+,
    Cincap

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 146
    Par défaut
    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;

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 591
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 591
    Par défaut
    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"

    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';
     
    .................
    A quoi correspond "Ouvrir Filename" = TOpenDialog si oui, cela ne fonctionne pas non plus.

    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

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 591
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 591
    Par défaut
    @ 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

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 591
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 591
    Par défaut
    @ 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.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (LTaille.Caption = >180) then showmessage('Pas correct');
    Edit : Tout est rentré dans l'ordre merci à tous.

    @+,

    Cincap

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Détecter Windows 2000 Professionnel
    Par FW-S dans le forum Delphi
    Réponses: 9
    Dernier message: 03/11/2006, 23h02
  2. Détecter l'arrêt du système ?
    Par Jéremy A dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 24/03/2003, 19h06
  3. Réponses: 2
    Dernier message: 12/02/2003, 15h26
  4. [Antialiasing][Wu][poids]
    Par JHelp dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 22/12/2002, 00h17
  5. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo