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

denisbertin Messages postés 245 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 13 mai 2023 - 2 août 2020 à 12:15
denisbertin Messages postés 245 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 13 mai 2023 - 6 août 2020 à 16:54
Bonjour, Est ce que quelqu'un sait comment ouvrir des fichiers WebP

en utilisant une interface Delphi ?
A voir également:

3 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
Modifié le 2 août 2020 à 14:26
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,

2
denisbertin Messages postés 245 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 13 mai 2023 1
2 août 2020 à 23:47
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.
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
6 août 2020 à 13:51
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
3 août 2020 à 10:50
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
2
denisbertin Messages postés 245 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 13 mai 2023 1
3 août 2020 à 19:37
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 ?
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50 > denisbertin Messages postés 245 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 13 mai 2023
4 août 2020 à 10:11
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
0
denisbertin Messages postés 245 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 13 mai 2023 1 > Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022
5 août 2020 à 19:17
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 ?
0
denisbertin Messages postés 245 Date d'inscription lundi 22 avril 2013 Statut Membre Dernière intervention 13 mai 2023 1
Modifié le 7 août 2020 à 14:53
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}



0
Rejoignez-nous