openEXR laden

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
stevensen
Beiträge: 16
Registriert: Fr 18. Sep 2009, 14:36

openEXR laden

Beitrag von stevensen »

Hallo,

hoffe wie immer im richtigen Unterforum zu posten.
Wie kann ich denn am einfachsten openEXR-files laden? Tif,bmp,png etc gehen schon nur mit exr habe ich Probleme.
Gibt es eine Lib oder sowas, die mir da helfen könnte?

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: openEXR laden

Beitrag von theo »

Ich würde da ImageMagick zum Umwandeln nehmen:

Code: Alles auswählen

convert demo.exr demo.png


S.a: http://wiki.freepascal.org/Executing_Ex ... rograms/de

stevensen
Beiträge: 16
Registriert: Fr 18. Sep 2009, 14:36

Re: openEXR laden

Beitrag von stevensen »

Danke für die Antwort!
Ich glaube, dass es zu lange dauert die Bilder erst zu konvertieren, weil es immer 8 sind und schon mal paar MB haben können.
Dann muß ich wohl weiter auf die Suche nach ner Lib oder ähnliches gehen. Aber danke nochmals !

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: openEXR laden

Beitrag von wp_xyz »

FreeImage (http://freeimage.sourceforge.net/index.html) kann exr. Gibt es auch für Delphi und sollte wahrscheinlich auch für Lazarus funtionieren, zumindest im DELPHI-Modus.

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: openEXR laden

Beitrag von theo »

stevensen hat geschrieben:Ich glaube, dass es zu lange dauert die Bilder erst zu konvertieren, weil es immer 8 sind und schon mal paar MB haben können.
Dann muß ich wohl weiter auf die Suche nach ner Lib oder ähnliches gehen. Aber danke nochmals !


Naja, du fragtest: "Wie kann ich denn am einfachsten openEXR-files laden?"
Alles andere ist ziemlich sicher nicht besonders einfach. :wink:

stevensen
Beiträge: 16
Registriert: Fr 18. Sep 2009, 14:36

Re: openEXR laden

Beitrag von stevensen »

@ theo
theo hat geschrieben:Ich würde da ImageMagick zum Umwandeln nehmen:
convert demo.exr demo.png


Weiß nicht wie es jetzt gemeint war vorher konvertieren und dann das png laden, oder den externen Converter vom Programm aus aufrufen und das png laden.
Aber genau genommen ist ist dein Tipp auch kein Laden einer Exr-Datei. :wink:

Die Freeimage-Lib hatte ich auch schonmal versucht, hab sie aber nicht zum Laufen gebracht, was aber sicher an meiner sporadischen Benutzung von Lazarus liegt.
Ein Tutorial wie man diese Lib richtig installiert oder von Delphi zu Lazarus konvertiert wäre sehr hilfreich für mich. Außerdem muß ich wohl auch dann noch die 32GB installieren.
Villeicht versuch ich das nochmal.

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: openEXR laden

Beitrag von theo »

stevensen hat geschrieben:Weiß nicht wie es jetzt gemeint war vorher konvertieren und dann das png laden, oder den externen Converter vom Programm aus aufrufen und das png laden.

Letzteres natürlich. (Deshalb auch der Link zu "Executing External Programs")
stevensen hat geschrieben:Aber genau genommen ist ist dein Tipp auch kein Laden einer Exr-Datei. :wink:

Ich weiß ja nicht, was du erreichen willst.
Wenn ich einfach das Bild in der *.exr Datei in meinem Programm anzeigen möchte, würde ich es so machen.
Wenn du "mehr" benötigst, dann wünsche ich dir viel Erfolg und Spaß. :wink:

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: openEXR laden

Beitrag von wp_xyz »

Außerdem muß ich wohl auch dann noch die 32GB installieren.

Du musst gar nichts installieren. Ich nehme an, du bist auf WIndows: Kopiere die freeimage.dll in das Verzeichnis mit deiner Exe-Datei. Kopiere die Dateien aus (freeimage)\Wrapper\Delphi\src in dein Projektverzeichnis (oder in ein anderes, falls du FreeImage öfter verwenden willst - trage dieses Verzeichnis dann im Suchpfad von Lazarus ein). Die Unit "FreeBitmap" benötigt unter Lazarus die Direktive "{$MODE DELPHI}" - trage das im Kopf der Unit ein.

Anschließend habe ich mir folgendes Mini-Projekt zusammengeklickt:
Formular mit einem TImage, einem Button und einem FileOpenDialog. Der Button hat folgenden OnClick-Code:

Code: Alles auswählen

 
uses
  ... FreeBitmap ...
 
procedure TForm1.Button1Click(Sender: TObject);
var
  winbmp: TFreeWinBitmap;
  stream: TStream;
begin
  with OpenDialog1 do begin
    if Execute then begin
      winbmp := TFreeWinBitmap.Create(FIT_BITMAP)// Hier muss bei EXR evtl etwas anderes eingetragen werden --> siehe FreeImage docs
      try
        stream := TFileStream.Create(Filename, fmOpenRead);
        try
          winbmp.LoadFromStream(stream);
        finally
          stream.Free;
        end;
        Image1.Picture.Bitmap.Handle := winbmp.CopyToBitmapH;
      finally
        winbmp.Free;
      end;
    end;
  end;
end


Läuft einwandfrei mit jpg, bmp, png, gif und ico. Wie genau das Vorgehen bei EXR ist, weiß ich nicht, das Format ist mir unbekannt. Aber du findest Informationen dazu im Manual von FreeImage. Schau dir die Dokumentation zu FreeImage an, falls Formatkonvertierungen nötig sein sollten.

stevensen
Beiträge: 16
Registriert: Fr 18. Sep 2009, 14:36

Re: openEXR laden

Beitrag von stevensen »

jau, jetzt gehts !!! Vielen Dank an alle

@ wp_xyz
Vielen Dank im Speziellen.
Dein Code funkioniert! Mußte nur noch
uses
... FreeImage
dabei machen, damit FIT_BITMAP gefunden wird. Jpgs, etc wurden direkt geladen und angezeigt.
Die EXRs hackten erst, sie wurden nur geladen aber nicht im Timage angezeigt, die müssen erst konvertiert werden.
Das habe ich hiermit gemacht bevor ich es zur Picturebox (Image1)schicke:

winbmp.ToneMapping(FITMO_DRAGO03,0,0);

Das dabei erstmal Daten(Bit-Tiefe) verloren gehen ist momentan nicht tragisch.
Ob das der beste Weg ist weiß ich nicht aber er funktioniert schonmal. :D
Also vielen Dank.

Antworten