AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Laden eines .webp Bildes?

Ein Thema von softtouch · begonnen am 4. Jul 2022 · letzter Beitrag vom 16. Nov 2022
Antwort Antwort
Rolf Frei

Registriert seit: 19. Jun 2006
658 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Laden eines .webp Bildes?

  Alt 5. Jul 2022, 14:39
Aber dafür könnte man auch einfach die Delphi Klasse TWICImage (Kapselung der Windows Imaging Component) nutzen. Ok, ist nur für Windows, aber damit konvertiere ich massenweise WEBP Bilder.

Delphi-Quellcode:
            FWICImage := TWICImage.Create;
            try
              FWICImage.LoadFromFile(ImagesDir + ImgName + '_tmp.jpg');
              DoConvert := FWICImage.ImageFormat <> wifJpeg;
              if DoConvert then
              begin
                FWIcImage.ImageFormat := wifJpeg;
                FWICImage.SaveToFile(ImagesDir + ImgName);
              end;
            finally
              FWICImage.Free;
            end;
Hier in meinem Fall liegen die Bilder aber mit der Endung Jpg vor, obwohl es WEBP Bilder sind. Interessanter Weise hat der Webbrowser damit kein Problem. Mein Programm aber weldete ständig JPEG Fehler. Nach Analyse was da los ist, habe ich herausgefunden, dass das nicht JPG's sondern WEBP Bilder mit der Endung jpg sind. Teilsweise liegen die Bilder als JPG voer teilweise als WEBP, daher die Überprüfung in der Konvertierungroutine. Die TWICImage Klasse kann diese Dateien auch problemlos lesen und konvertieren.

Geändert von Rolf Frei ( 5. Jul 2022 um 14:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.754 Beiträge
 
Delphi 12 Athens
 
#2

AW: Laden eines .webp Bildes?

  Alt 5. Jul 2022, 15:17
Der Webbrowser achtet auf den ContentType (image/jpeg), nicht auf den Namen (Dateierweiterung).
Aber meißtens gehen die davon aus, dass eh alle Webdesigner nichtskönnende Schlampen sind, und schaut sich den Dateiinhalt an, also was wirklich da drin ist.


TImage/TGraphic hatte früher auch immer nur auf die Dateiendung geachtet.
Daher mußte man bei Streams selbst dafür sorgen, dass die richtige Graphics-Klasse geladen ist.

ABER jetzt schauen die nach, was wirklich drin ist (zumindestens werden die 4 MagicBytes angesehn) ... drum kann man nun auch Image1.Picture.LoadFromStream nutzen, sowie TDBImage mit unterschiedlichen Bildformaten im BLOB (Stream).


TWICImage (Windows Imaging Component ) macht auch sowas (Inhalt ansehn).
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.252 Beiträge
 
Delphi 12 Athens
 
#3

AW: Laden eines .webp Bildes?

  Alt 5. Jul 2022, 16:51
Aber dafür könnte man auch einfach die Delphi Klasse TWICImage (Kapselung der Windows Imaging Component) nutzen. Ok, ist nur für Windows, aber damit konvertiere ich massenweise WEBP Bilder.
Interessant, wenn das geht wäre das ja super.
Bist Du denn sicher dass WebP da standardmäßig im Windows unterstützt wird (is ja immerhin von Google) ?
Vielleicht hast Du irgendwo einen Link zu WICImage, mit der Liste der Formate,
ich vermute aber dass man dafür noch irgendeine Extension installieren muss, oder nicht ?
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Laden eines .webp Bildes?

  Alt 5. Jul 2022, 17:06
Vielleicht hast Du irgendwo einen Link zu WICImage
@Rollo
Einfach mal bei Microsoft als Anlaufstelle reinschauen, aber es wäre für seinen Zweck (FMX) absolut unpassend.

@TE
CLI Tools in Resource packen und je nach OS "entpacken" und nutzen wäre praktikabel.
WebBrowser (und evtl sogar eine Online-Konvertierung) wäre praktikabel.
Api die FMX unterstützt (wie Skia...) oder direkt die WebP-Library einbinden und nutzen.

Das Du Libraries die das machen was Du möchtest als Overkill abstempelst, okay, ist ja kein Zwang das zu nutzen, aber ich bin gespannt wie Du dieses Problem löst.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.252 Beiträge
 
Delphi 12 Athens
 
#5

AW: Laden eines .webp Bildes?

  Alt 5. Jul 2022, 17:20
Vielleicht hast Du irgendwo einen Link zu WICImage
@Rollo
Einfach mal bei Microsoft als Anlaufstelle reinschauen, aber es wäre für seinen Zweck (FMX) absolut unpassend.
Dankesehr für den Hinweis.
Das hab ich natürlich gemacht und nicht nur bei M$ gesucht, ich finde allerdings keinerlei Hinweise darauf dass Microsoft-WIC sowas wie .WebP beherrscht,
deswegen frage ich ja nach.
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
658 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Laden eines .webp Bildes?

  Alt 5. Jul 2022, 17:59
Also ich habe bei mir nichsts spezielles installieren müssen, damit das WEBP unterstützt wird. Was mit der Windows Fotoanzeige angezeigt werden kann, wird auch von TIWCImage unterstützt, da dieses vermutlich auch diese Windows Imaging Component nutzt. Meiner Meinung nach ist das Bestandteil von mindesten Windows 10. Ob das auch in älteren Windows Versionen läuft, weiss ich nicht, da ich das da noch nie getestet habe.

Gemäss Doku werden da aber Codecs verwendet und bei den Standard Codecs wird das WEBP Format nicht angezeigt. Könnte also sein, das der Codec durch Firefox oder Edge auf dem PC landen oder halt bei Windows 10 wirklich direkt dabei sind.

Geändert von Rolf Frei ( 5. Jul 2022 um 18:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.754 Beiträge
 
Delphi 12 Athens
 
#7

AW: Laden eines .webp Bildes?

  Alt 5. Jul 2022, 19:33
Grundsätzlich:
https://docs.microsoft.com/de-de/win...#native-codecs
https://docs.microsoft.com/en-gb/win...ive-wic-codecs


Aber andere Programme können da Teile nachrüsten.
Kann gut sein, dass z.B. der Webbrowser oder ein anderes Programm sich dort registriert hat, falls Webp wirklich nicht direkt durch Windows dort drin ist.
https://github.com/webmproject/webp-wic-codec

Das ist wie beim Windows Scripting Host, wo Windows die Schnittstelle und ein paar Basis-Scriptsprachen bietet und dann Andere das erweitern können.


Ihr könnt das ja mal in einem leeren/frischen Windows ausprobieren,
bzw. in der sehr rudimentären Windows-Sandbox.
Bei Google suchenwindows sandbox
https://www.delphipraxis.net/207151-...s-sandbox.html
https://blogs.embarcadero.com/window...ndbox-6936052/
https://blogs.embarcadero.com/how-to...ndows-sandbox/
...
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Jul 2022 um 19:36 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.081 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Laden eines .webp Bildes?

  Alt 6. Jul 2022, 14:10
Doofe Antwort, die aber ohne Third-Party und Abhängigkeiten auskommen:
Man könnte natürlich auch die ganzen RFCs und Beispielimplementierungen zu WebP lesen und das selber in Delphi hacken.
Aber die dafür nötige Zeit muss auch erstmal bezahlt werden.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz