AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Laden eines .webp Bildes?

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

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

AW: Laden eines .webp Bildes?

  Alt 4. Jul 2022, 15:12
Je nach Platform braucht man eine andere "LIB",
da Diese ja vorkompiliert sind und demnach nur für je eine Platform möglich sind.


Also ob man das statisch oder dynamisch linkt (gegen eine DLL/Library-Datei)
oder ob man das in die Anwendung einkompilier/linkt (den Code importiert).

Teilweise gibt es in einigen OS bereits etwas, was man direkt verwenden kann.
z.B. denke ich mal, dass webp im Android enthalten sein wird und man da Funktionen via Java aufrufen könnte.

bekanntes Beispiel: im Windows greift man direkt auf die Webcam zu und nutzt irgendeine Barcode-Lib,
aber im Android/iOS könnte man auch eine Action der Camera-App ansprechen und sich von ihr den Barcode geben lassen.

z.B.
hier wird nur für Win32 oder Win64 etwas "in die EXE gelinkt", während bei den anderen Compilern nur gegen eine entsprechende LIB ge-/verlinkt wird (welche vermutlich von Delphi mitgegeben wird).
Zitat:
Delphi-Quellcode:
{$IFDEF MACOS}
  {$IF defined(CPUARM)}
    {$IFDEF IOS}   //IOS devices
    PU = '';
    LIBPCRE = 'libpcre.a';
    {$DEFINE STATIC_LIB}
    {$ELSE}        //OSX
    PCRELib = '/usr/lib/libpcre.dylib';
    {$DEFINE DYNAMIC_LIB}
    {$ENDIF}
  {$ELSE}
    {$IFDEF IOS}   //IOS Simulator
    PCRELib = 'libpcre.dylib';
    {$ELSE}        //OSX
    PCRELib = '/usr/lib/libpcre.dylib';
    {$ENDIF}
    {$DEFINE DYNAMIC_LIB}
  {$ENDIF}
{$ENDIF MACOS}
{$IFDEF LINUX}
  PU = '';
{$IFDEF PIC}
  LIBPCRE = 'libpcre_PIC.a';
{$ELSE  PIC}
  LIBPCRE = 'libpcre.a';
{$ENDIF PIC}
  {$DEFINE STATIC_LIB}
{$ENDIF LINUX}
{$IFDEF MSWINDOWS}
  {$IFDEF CPUX86}
  PU = '_';
  {$ELSE}
  PU = '';
  {$ENDIF}
{$ENDIF}
{$IFDEF ANDROID}
  PU = '';
  LIBPCRE = 'libpcre.a';
  {$DEFINE STATIC_LIB}
{$ENDIF ANDROID}
{$IFDEF PCRE16}
  PCREname = 'pcre16_';
{$ELSE}
  PCREname = 'pcre_';
{$ENDIF}
{$EXTERNALSYM PCREname}

{$IFDEF NEXTGEN}
 {$NODEFINE pcre_study}
 {$NODEFINE pcre_compile}
 {$NODEFINE pcre_compile2}
{$ENDIF}

...

{$IF Declared(PCRELib)}
var
  _PCRELib: THandle;
{$ENDIF}

{$IFDEF MSWINDOWS}
  {$IFDEF PCRE16}
    {$IF Defined(Win32)}
      {$L pcre16_study.obj}
      {$L pcre16_compile.obj}
      {$L pcre16_config.obj}
      {$L pcre16_dfa_exec.obj}
      {$L pcre16_exec.obj}
      {$L pcre16_fullinfo.obj}
      {$L pcre16_get.obj}
      {$L pcre16_maketables.obj}
      {$L pcre16_newline.obj}
      {$L pcre16_ord2utf16.obj}
      {$L pcre16_refcount.obj}
      {$L pcre16_tables.obj}
      {$L pcre16_string_utils.obj}
      {$L pcre16_ucd.obj}
      {$L pcre16_valid_utf16.obj}
      {$L pcre16_version.obj}
      {$L pcre16_xclass.obj}
      {$L pcre16_default_tables.obj}
    {$ELSEIF Defined(Win64)}
      {$L pcre16_study.o}
      {$L pcre16_compile.o}
      {$L pcre16_config.o}
      {$L pcre16_dfa_exec.o}
      {$L pcre16_exec.o}
      {$L pcre16_fullinfo.o}
      {$L pcre16_get.o}
      {$L pcre16_maketables.o}
      {$L pcre16_newline.o}
      {$L pcre16_ord2utf16.o}
      {$L pcre16_refcount.o}
      {$L pcre16_string_utils.o}
      {$L pcre16_tables.o}
      {$L pcre16_ucd.o}
      {$L pcre16_valid_utf16.o}
      {$L pcre16_version.o}
      {$L pcre16_xclass.o}
      {$L pcre16_default_tables.o}
    {$ENDIF}
  {$ELSE}
    {$IF Defined(Win32)}
      {$L pcre_study.obj}
      {$L pcre_compile.obj}
      {$L pcre_config.obj}
      {$L pcre_dfa_exec.obj}
      {$L pcre_exec.obj}
      {$L pcre_fullinfo.obj}
      {$L pcre_get.obj}
      {$L pcre_maketables.obj}
      {$L pcre_newline.obj}
      {$L pcre_ord2utf8.obj}
      {$L pcre_refcount.obj}
      {$L pcre_tables.obj}
      {$L pcre_ucd.obj}
      {$L pcre_valid_utf8.obj}
      {$L pcre_version.obj}
      {$L pcre_xclass.obj}
      {$L pcre_default_tables.obj}
    {$ELSEIF Defined(Win64)}
      {$L pcre_study.o}
      {$L pcre_compile.o}
      {$L pcre_config.o}
      {$L pcre_dfa_exec.o}
      {$L pcre_exec.o}
      {$L pcre_fullinfo.o}
      {$L pcre_get.o}
      {$L pcre_maketables.o}
      {$L pcre_newline.o}
      {$L pcre_ord2utf8.o}
      {$L pcre_refcount.o}
      {$L pcre_tables.o}
      {$L pcre_ucd.o}
      {$L pcre_valid_utf8.o}
      {$L pcre_version.o}
      {$L pcre_xclass.o}
      {$L pcre_default_tables.o}
    {$ENDIF}
  {$ENDIF}
{$ENDIF MSWINDOWS}
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 4. Jul 2022 um 15:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: Laden eines .webp Bildes?

  Alt 4. Jul 2022, 16:01
Mit der skia4delphi API sollte dies möglich sein.
Zumindest bringt es laut beschreibung alles für FMX CrossPlatform mit.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von softtouch
softtouch

Registriert seit: 13. Feb 2015
Ort: Kerpen
237 Beiträge
 
Delphi 12 Athens
 
#3

AW: Laden eines .webp Bildes?

  Alt 4. Jul 2022, 17:01
Mit der skia4delphi API sollte dies möglich sein.
Zumindest bringt es laut beschreibung alles für FMX CrossPlatform mit.
Schon, aber das ist overkill und ich will auf keinen Fall abhängig von irgendwelchen 3rd. Party Komponenten sein. Damit bin ich schon mehrmals auf die Nase gefallen.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Laden eines .webp Bildes?

  Alt 5. Jul 2022, 13:21
Schon, aber das ist overkill und ich will auf keinen Fall abhängig von irgendwelchen 3rd. Party Komponenten sein. Damit bin ich schon mehrmals auf die Nase gefallen.
Dann bin ich mir nicht sicher was du willst. Das einzige was dir sonst noch übrig bleibt ist das ganze selbst anzupacken:
https://developers.google.com/speed/webp/
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Rollo62

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

AW: Laden eines .webp Bildes?

  Alt 5. Jul 2022, 14:00
Also ich würde dass im Zweifel mit Delphi4Skia machen, das unterstützt WebP.
Einfach mal ausprobieren, das ist relatin simpel einzubinden und ist notfalls auf allen Plattformen verfügbar.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.949 Beiträge
 
Delphi 12 Athens
 
#6

AW: Laden eines .webp Bildes?

  Alt 5. Jul 2022, 14:26
Ja, mit Skia funktioniert das gut, das habe ich selbst schon ausprobiert, und es läuft auf allen Plattformen, die Delphi selbst unterstützt.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#7

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
venice2
(Gast)

n/a Beiträge
 
#8

AW: Laden eines .webp Bildes?

  Alt 4. Jul 2022, 17:45
Mit der skia4delphi API sollte dies möglich sein.
Zumindest bringt es laut beschreibung alles für FMX CrossPlatform mit.
Es wurde doch ganz klar vom TE zitiert!
Zitat:
somit suche ich nacheiner reinen Pascal Lösung ohne externe Abhängigkeiten.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: Laden eines .webp Bildes?

  Alt 4. Jul 2022, 19:01
Mit der skia4delphi API sollte dies möglich sein.
Zumindest bringt es laut beschreibung alles für FMX CrossPlatform mit.
Es wurde doch ganz klar vom TE zitiert!
Zitat:
somit suche ich nacheiner reinen Pascal Lösung ohne externe Abhängigkeiten.
Hmmm.... das kommt nun mal von Google... ohne externe Abhängigkeit, mir fiele jetzt nur auf die schnelle einen modernen Web-Browser zu embedden und darin das Bild darstellen zu lassen, wie man es speichert da bin ich überfragt aber dies könnte vielleicht eine Möglichkeit sein.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
982 Beiträge
 
Delphi 6 Professional
 
#10

AW: Laden eines .webp Bildes?

  Alt 5. Jul 2022, 12:32
Hmm..

Ich glaube mit nativ Pascal wird das nichts...

Aber:

Die Tools unter
https://developers.google.com/speed/webp/download

herunterladen und dann kann per Commandozeilen Tool 'dwebp' das WebP dekodiert werden.
(https://developers.google.com/speed/webp/docs/dwebp)

Einfach per ShellExec mit den richtigen Parametern füttern und Du hast zu mindestens PNG, TIFF oder BMP.
Auch ist es möglich, per stdin das webp als Daten (ohne Zwischenspeicherung als Datei) zu übergeben und ebenso per Stdout wieder als Data zurück zu bekommen.

Hinweis:
'Precompiled WebP utilities and library for Linux, Windows and macOS / Precompiled WebP framework for iOS'

Somit sollte es auch unter anderen OS funktionieren.
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:30 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