Bonjour,
Je vous propose une petite unité toute simple qui vous permet de lire dans un TBitmap tous les formats supportés par GDI+
https://github.com/tothpaul/Delphi/t...ter/GDIPBitmap
Bonjour,
Je vous propose une petite unité toute simple qui vous permet de lire dans un TBitmap tous les formats supportés par GDI+
https://github.com/tothpaul/Delphi/t...ter/GDIPBitmap
Bonjour Paul ! Merci pour le partage.
Je rencontre un problème en essayant de faire une démo. Voici mon code (d'après l'exemple fourni par tes soins) :
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 procedure TForm1.FormCreate(Sender: TObject); var vBitmap: TBitMap; vStream: TFileStream; begin vBitmap := TBitMap.create; vStream := TFileStream.Create('image.png'); vBitmap.GDIPLoadFromStream(vStream): try Canvas.Draw(0, 0, vBitmap); finally vBitmap.Free; vStream.Free; end; end;C'est avec Delphi 10.2.[dcc32 Erreur] Unit1.pas(33): E2250 Aucune version surchargée de 'Create' ne peut être appelée avec ces arguments
Bon, je suppose qu'il fallait lire
L'exemple complet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part vStream := TFileStream.Create('..\..\image.png', fmOpenRead);
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 procedure TForm1.FormPaint(Sender: TObject); var vBitmap: TBitmap; vStream: TFileStream; begin vBitmap := TBitmap.create; vStream := TFileStream.Create('..\..\image.png', fmOpenRead); vBitmap.GDIPLoadFromStream(vStream); try Canvas.Draw(10, 10, vBitmap); finally vBitmap.Free; vStream.Free; end; end;
Pourquoi (c'est vraiment une question) ne pas "cacher" la variable de type TFileStream dans la méthode GDIPLoadFromStream (quitte à changer le nom de la méthode) ?
Bonjour,
voici un code très sympathique et utile, merci pour ce partage
en testant un peu je me suis rendu compte qu'en chargeant un png on conservait le canal alpha![]()
mais en chargeant un bmp 32bit on perdait le canal alpha !!!
alors bien sûr on peut charger le bitmap directement mais GDIPlus s'en sort très bien avec les bitmap32 et devrait pouvoir gérer cela.
à part cela et le petit oublis signalé par Roland rien à dire à part Bravo et Merci
Cordialement,
@+
Hello, tu voudrais une méthode LoadFromFile ? mais en fait le Stream est plus générique, tu peux utiliser un TResourceStream, un TCeQueTuVeuxStream
sur un autre forum on me faisait remarquer que Delphi savait déjà lire les PNG et JPG...c'est pas faux mais en fait j'ai fait cette unité pour le format TIF...le fait que le même code supporte les autres format est secondaire![]()
effectivement vu sous cet angle
je trouvais dommage que l'on ne puisse pas l'utiliser avec un D7 du coup
j'ai fait une petite modif,ajout au code pour le rendre compatible de D7 à Tokyo
mais comme je sais pas si tu es OK avec ça et si ça intéresse quelqu'un j'attends avant de poster
Cordialement,
@+
Partager