Format Png

[Résolu]
Signaler
Messages postés
460
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
-
Messages postés
460
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
-
Bonjour à toutes et à tous,

J'aimerai pouvoir charger une image en Png, mon code permet de charger un Jpg et Bmp mais par contre pour un Png, l'image reste vide.

J'utilise la librairie et la sauvegarde se fait bien pour les 3 formats.

Voici mon code :

procedure TMainForm.BchargerClick(Sender: TObject);
var 

    JPG : TJPegImage;
    BMP : TBitmap;
    Ext : string;
    BMPLoaded : boolean;
    NewH, NewW, OldSBM : integer;

begin
 
{ initialisation }
  BMPLoaded := false;


  { ouverture d'une image }
  if Opd1.Execute

then
  begin

    { recuperation de l'extention }
    Ext := LowerCase(ExtractFileExt(Opd1.FileName));


    { creation du bitmap temporaire }
    BMP := TBitmap.Create;

    try
      { si c'est un jpeg }      if (ext '.jpg') or (ext'.jpeg')
 
then
      begin

        { creation d'une image jpeg }
        JPG := TJPegImage.Create;

        try

          { charge a partir du fichier }
          JPG.LoadFromFile(OpD1.FileName);
          { convertion JPG > BMP }
          JPEGToBMP(JPG,BMP);
          { BMP est prét }
          BMPLoaded := true;

        finally

          { liberation de JPG }
          JPG.Free;

        end;
      end
      else

      { si c'est un bitmap }
      if ext = '.bmp' then

      begin

        { charge a partir du fichier }
        BMP.LoadFromFile(OpD1.FileName);
        { BMP est prét }
        BMPLoaded := true;

      end;
Reste du code....

D'après mes notes, je pensais que le Timage acceptait le format Png sans code.

Merci,

Cincap

[mailto: mailto:]

7 réponses

Messages postés
460
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
2
Voila, c'est ok pour moi, j'ai vu l'erreur dans le code, je devais aussi créer un

TPNGObject.Create;

Je cloture le topic, merci à tous.

@+,

Cincap
[mailto: mailto:]
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
Salut,

pour pouvoir utiliser le format PNG avec Delphi
il faut utiliser soit :
une librairie type "PNGLib"
ou le "GDIPlus de progdigy"
 
@+
Cirec

<hr siz="" />
Messages postés
460
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
2
Bonjour Cirec, en effet je le précise dans mon topic, j'utilise la librairie PngLib.

uses Jpeg {$IFDEF PNGLIB1},PNGImage{$ELSE}{$IFDEF PNGLIB2},zPNG{$ENDIF}{$ENDIF};

Pour la sauvegarde, cela fonctionne pour les 3 formats mais au chargement d'un fichier au format *.Png, mon Timage reste vide.

J'oublie certainement une instruction dans mon code.

@+,

Cincap

[mailto: mailto:]
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
124
Je te conseille vivement l'utilisation de la bibliothèque GraphicEx qui permet au Timage de charger quasiment tout type d'image sans avoir à modifier le code source.

Présent sur ce site:
http://www.soft-gems.net/index.php?option=com_content&task=view&id=13&Itemid=33

Le zip est ici:
http://www.soft-gems.net/supplement/download.php?ID=13
Messages postés
460
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
2
Bonjour à toutes et à tous,

@ Cptpingu, merci pour l'info, je l'avais déjà installée pour D6 et j'avais essayé avec une fiche un Tbouton, un Timage, un Topendialog et à l'exécution, je ne savais pas choisir un fichier *.png alors qu'il était repris dans la propriété filter.

Donc forcément il manquait quelque chose sur ma fiche ?

Sinon je viens d'essayer les 2 exemples.

@+,

Cincap

[mailto: mailto:]
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
124
Je ne vois pas ou est le probleme. Si tu charges un fichier png dans un TImage avec GraphicEx, cela fonctionne.
Dans ton opendialog, essaie de mettre "*", ca devrait te permettre de tester.
Messages postés
460
Date d'inscription
dimanche 5 décembre 2004
Statut
Membre
Dernière intervention
6 avril 2009
2
oui tu as raison, je ne référenciai pas "GraphicEx" dans l'uses.

Merci à toi.

@+,

Cincap 

[mailto: mailto:]