Supported formats
BMP files [reading, writing]
Dr. Halo CUT files [reading] *
DDS files [reading]
EXR files [reading, writing]
Raw Fax G3 files [reading]
GIF files [reading, writing]
HDR files [reading, writing]
ICO files [reading, writing]
IFF files [reading]
JBIG files [reading, writing] **
JNG files [reading, writing]
JPEG/JIF files [reading, writing]
JPEG-2000 File Format [reading, writing]
JPEG-2000 codestream [reading, writing]
JPEG-XR files [reading, writing]
KOALA files [reading]
Kodak PhotoCD files [reading]
MNG files [reading]
PCX files [reading]
PBM/PGM/PPM files [reading, writing]
PFM files [reading, writing]
PNG files [reading, writing]
Macintosh PICT files [reading]
Photoshop PSD files [reading]
RAW camera files [reading]
Sun RAS files [reading]
SGI files [reading]
TARGA files [reading, writing]
TIFF files [reading, writing]
WBMP files [reading, writing]
WebP files [reading, writing]
XBM files [reading]
XPM files [reading, writing]
(*) only grayscale
(**) only via external plugin, might require a commercial license
implementation uses FreeBitmap, FreeUtils; {$R *.dfm} // Version simple sans prise en charge de la transparence procedure Tfrm_FreeImageTestMain.btn_OpenClick(Sender: TObject); var aFreeBitmap: TFreeWinBitmap; aBmp: TBitmap; begin OpenDialog1.Filter := FIU_GetFullExtList; if OpenDialog1.Execute then begin aFreeBitmap := TFreeWinBitmap.Create; try if aFreeBitmap.Load(OpenDialog1.FileName) then begin aBmp := TBitmap.Create; try aBmp.Handle := aFreeBitmap.CopyToBitmapH; Image1.Picture.Bitmap.Assign(aBmp); finally aBmp.Free; end; end; finally aFreeBitmap.Free; end; end; end; // Version avec prise en charge de la transparence function ByteSwap(const A:Cardinal):Cardinal; asm BSWAP EAX // MOV CL, AL // récupère la valeur de Alpha SHR EAX, 8 // décalage vers la droite de 1 Bit SHL ECX, 018h // décalage de 3 Bits vers la gauche XOR EAX, ECX // Assemblage des deux end; procedure Tfrm_FreeImageTestMain.Button1Click(Sender: TObject); var aFreeBitmap: TFreeWinBitmap; aBmp: TBitmap; aCol: TRGBQuad; begin OpenDialog1.Filter := FIU_GetFullExtList; if OpenDialog1.Execute then begin aFreeBitmap := TFreeWinBitmap.Create; try if aFreeBitmap.Load(OpenDialog1.FileName) then begin aBmp := TBitmap.Create; try aBmp.Width := aFreeBitmap.GetWidth; aBmp.Height := aFreeBitmap.GetHeight; // Couleur de fond pour image transparente Integer(aCol) := ByteSwap(clWhite); aFreeBitmap.DrawEx(aBmp.Canvas.Handle, Rect(0, 0, aBmp.Width, aBmp.Height), False, @aCol); Image1.Picture.Bitmap.Assign(aBmp); finally aBmp.Free; end; end; finally aFreeBitmap.Free; end; end; end; end.
FreeImage DLL
Binary distribution includes DLL, linkage LIB, header file, C++, C#, Delphi and VB6 wrappers, and examples.
Download FreeImage 3.18.0 (WIN32/WIN64)
FreeImage Documentation
The documentation covers release 3.18.0 of the library.
Download FreeImage3180.pdf
@+ Cirec
procedure TDisque_window.Lecture_d_un_fichier_webp(pc_ce_fichier_img:string); var pc_exec,nom_png,un_nom_de_fichier:pc1024; denis_webp:string; p:pchar; begin strcopy(nom_png,pchar(pc_ce_fichier_img)); wutil.verifier_ext(nom_png,point_png); //box(self.hwindow,pchar(pc_ce_fichier_img)); strcat(wutil.get_start_directory(pc_exec),'<bold>bin\dwebp.exe</bold><ital></ital>'); //box(self.hwindow,pc_exec); //Conversion WebP vers PNG strcat(pc_exec,pchar(' "'+pc_ce_fichier_img+'" -o "'+strpas(nom_png)+'"')); //-flip-bmp //box(self.hwindow,pc_exec); winexec(pc_exec,sw_hide); //sw_show sleep(1000); //boucle d'attente de la fin du Batch Job while Wutil.VerifierSiFichierEstOuvert(nom_png) do begin end; if false then box(self.hwindow,nom_png); Self.Lecture_d_un_fichier_image_open_image_file(strpas(nom_png),false); denis_webp:=Get_Application_data_path; strcopy(un_nom_de_fichier,pchar(denis_webp)); p:=strpos(un_nom_de_fichier,'\AppData'); if p<>nil then begin p^:=#0; strcat(p,'\Denisdraw\WebP'); wutil.Verif_et_creer_repertoire(un_nom_de_fichier); //box(self.hwindow,pchar(denis_webp)); wutil.file_Copy(pc_ce_fichier_img,pchar( strpas(un_nom_de_fichier)+'\'+ExtractFileName(pc_ce_fichier_img))); end; try self.Trace_log(z_open_file.string_importer,nom_png); except end; try if d_tracelog.un_dial_trace_log<>nil then d_tracelog.un_dial_trace_log.actualiser_la_liste; except end; Unit_explore.Memoriser_dans_Regedit(nom_png); {La suite...} end; {TDisque_window.Lecture_d_un_fichier_webp}
2 août 2020 à 23:47
afin d'utiliser la Dll libwebp-7.dll depuis l'environnement de Delphi.
6 août 2020 à 13:51
Excellente, cette librairie !
Et oui, elle traite les webp, et ça marche du tonnerre.
Ça va peut-être me motiver pour reprendre 1 ou 2 programmes que j'avais laissés en jachère depuis bien longtemps.
En tout cas, ça me donne l'envie...
Merci pour le tuyau, et au plaisir de lire à nouveau tes interventions sur le site, toujours pertinentes et intéressantes.
@ + !
japee