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

Langage Delphi Discussion :

Modifier le DPI d'une image


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Par défaut Modifier le DPI d'une image
    bonjour
    je souhaite choisir une image JPEG, qu'elle s'affiche dans un Timage, modifier le DPI de cette image en 300 DPI.

    Je n'ai pas d'erreurs mais l'image ne prends pas en compte la resolution 300 DPI

    Je deviens fou !!!

    Si quelqu'un peut m'aider , grand MERCI !



    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    procedure TForm1.Button2Click(Sender: TObject);
    const
      BufferSize = 50;
      DPI = 1; //inch
      DPC = 2; //cm
    var
      Buffer: string;
      index: INTEGER;
      FileStream: TFileStream;
      xResolution: WORD;
      yResolution: WORD;
      JpegImage: TJpegImage;
      _type: Byte;
      StrNomFichier:string;
     
    begin
      If OpenDialog1.Execute
      then
       begin
        StrNomFichier:=(OpenDialog1.FileName);
        JpegImage := TJpegImage.Create;
     
        face.Picture.LoadFromFile(StrNomFichier);
     
        FileStream:= TFileStream.Create (OpenDialog1.FileName, fmOpenReadWrite);
     
     
        SetLength(Buffer, BufferSize);
        FileStream.Read(buffer[1], BufferSize);
        index := POS('JFIF' + #$00, buffer);
     
     
          FileStream.Seek(index + 6, soFromBeginning);
          _type := DPI;
          FileStream.write(_type, 1);
          xresolution := swap(300);
          FileStream.write(xresolution, 2);
          yresolution := swap(300);
          FileStream.write(yresolution, 2);
     
     
          JpegImage.SaveToStream(FileStream);
         // face.Picture.SaveToFile(imei.Text+'face.JPG');
     
     
        FileStream.Free;
        JpegImage.Free;
        //DeleteFile(StrNomFichier); }
      end;
     
     
    end;

  2. #2
    Membre Expert

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 296
    Par défaut
    Tu fais un SaveToStream sur le Stream que tu as modifié, il ne faudrait pas faire un LoadFromStream?

  3. #3
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Par défaut DPI
    Cela ne fonctionne toujours pas meme avec loadfromstream

    Pas d'erreur mais la DPI de l'image ne change pas, ça m'énerve !!

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 939
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 939
    Par défaut
    Sans pouvoir te donner plus d'explication, je voudrais simplement savoir l'utilité de modifier le nombre de DPI du fichier .

  5. #5
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 159
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 159
    Par défaut
    Salut.

    Ton bout de code fonctionne, mais à UNE condition : qu'il y ait bien la chaine JFIF au début du fichier !
    Je viens de tester avec une image qui était en 96 DPI, et elle se retrouve bien en 300.
    Mais ça ne fonctionne pas pour un fichier qui commence par EXIF ! Et il y en a, surtout en provenance d'APN.

    À voir avec un éditeur hexadécimal...

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 938
    Billets dans le blog
    6
    Par défaut
    Cette extension JFIF a été conçue pour ajouter des données manquantes dans les JPEG.
    La norme EXIF définit d'autres moyens d'inclure ces données.
    Le code de qfranck03 devrait éliminer les non-JFIF.

    Second point : tous les viewers JPEG ne respectent pas les résolutions, prenant alors celle standard de l'écran. C'est pê le cas du TImage, au moins dans certaines versions de Delphi ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 9
    Par défaut Utilité ?
    Tout simplement que je dois transmettre des photos à mon boulot par une application interne et cela prend uniquement celles transmises en 300 DPI !!!

Discussions similaires

  1. Modifier la source d'une image
    Par Slide dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 12/07/2007, 16h09
  2. [c# 2.0] modifier la taille d'une image
    Par r0d dans le forum Windows Forms
    Réponses: 4
    Dernier message: 07/06/2007, 15h37
  3. modifier la transparence d'une image
    Par zidenne dans le forum Delphi
    Réponses: 5
    Dernier message: 02/11/2006, 16h55
  4. [ImageMagick] Changer le dpi d'une image
    Par gIch dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 20/02/2006, 11h42
  5. Modifier un curseur par une image
    Par daninho dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 28/01/2006, 21h32

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