Bonjour, Est ce que quelqu'un sait comment ouvrir des fichiers Webp

Signaler
Messages postés
226
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
28 septembre 2020
-
Messages postés
226
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
28 septembre 2020
-
Bonjour, Est ce que quelqu'un sait comment ouvrir des fichiers WebP

en utilisant une interface Delphi ?

3 réponses

Messages postés
3818
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
18 septembre 2020
34
Bonjour,

regarde cette lib elle fait ce que tu demandes ;)

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

Cordialement,

Messages postés
226
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
28 septembre 2020
1
Bonjour, Ce que je cherche précisément serait une interface en Delphi qui me permettrais de lire une image au format WebP
afin d'utiliser la Dll libwebp-7.dll depuis l'environnement de Delphi.
Messages postés
1721
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
30 août 2020
5
Salut Cirec,

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
Messages postés
3818
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
18 septembre 2020
34
Ben oui c'est exactement ce que cette lib fait:
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.


ce petit bout de code charge une image (peu importe le format) et l'affiche dans un TBitmap de la VCL
Messages postés
226
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
28 septembre 2020
1
Bonsoir cirec, tout cela est bien beau mais comment obtenir les snippets uses "FreeBitmap, FreeUtils";
Si on ne peut pas les connaître cette méthode ne peut pas être compilée sans ces module ou se trouve t-il ?
Messages postés
3818
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
18 septembre 2020
34 >
Messages postés
226
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
28 septembre 2020

re,

dans le premier message je t'ai donné un lien
.
Sur cette page tu y trouveras tous les liens de téléchargements
(Sources, Dll, Delphi units, et documentations PDF)

pour toi il te faut
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)

et
FreeImage Documentation

The documentation covers release 3.18.0 of the library.

Download FreeImage3180.pdf


Cordialement,

@+ Cirec
Messages postés
226
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
28 septembre 2020
1 >
Messages postés
3818
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
18 septembre 2020

J'aurais voulue savoir si un prototype pascal existe pour lire les fichiers Webp, avec une interface vers la Dll (dynamic link library) suivante "Lire une image webP" est ce que la library GdiPlus permet de lire les fichiers *.WEBP ?
Messages postés
226
Date d'inscription
lundi 22 avril 2013
Statut
Membre
Dernière intervention
28 septembre 2020
1
Bonjour, Nowoday j'ai utilisé cette suite de script pour décoder un fichier WebP :

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}