OpenEXR bietet die Spezifikation und Referenzimplementierung des EXR-Dateiformats, dem professionellen Bildspeicherformat der Filmindustrie.
Der Zweck des EXR-Formats besteht darin, szenenlineare Bilddaten mit hohem Dynamikbereich und zugehörige Metadaten genau und effizient darzustellen, mit starker Unterstützung für mehrteilige, mehrkanalige Anwendungsfälle.
OpenEXR wird häufig in Host-Anwendungssoftware verwendet, bei der es auf Genauigkeit ankommt, wie etwa fotorealistisches Rendering, Texturzugriff, Bild-Compositing, Deep Compositing und DI.
Ziel des OpenEXR-Projekts ist es, das EXR-Format zuverlässig und modern zu halten und seinen Platz als bevorzugtes Bildformat für die Erstellung von Unterhaltungsinhalten zu behaupten.
Größere Überarbeitungen sind selten und neue Funktionen werden sorgfältig gegen die erhöhte Komplexität abgewogen. Die Hauptprioritäten des Projekts sind:
Robustheit, Zuverlässigkeit, Sicherheit
Abwärtskompatibilität, Datenlebensdauer
Leistung – Lese-/Schreib-/Komprimierungs-/Dekomprimierungszeit
Einfachheit, Benutzerfreundlichkeit, Wartbarkeit
Breite Akzeptanz, Unterstützung mehrerer Plattformen – Linux, Windows, macOS und andere
OpenEXR ist ausschließlich für 2D-Daten gedacht. Es eignet sich nicht für die Speicherung volumetrischer Daten, zwischengespeicherter oder beleuchteter 3D-Szenen oder komplexerer 3D-Daten wie Lichtfelder.
Die Ziele des Imath-Projekts sind Einfachheit, Benutzerfreundlichkeit, Korrektheit und Überprüfbarkeit sowie eine breite Akzeptanz. Imath ist nicht als umfassendes Paket für lineare Algebra oder numerische Analyse gedacht.
OpenEXR ist ein Projekt der Academy Software Foundation. Weitere Informationen finden Sie in den Governance-Richtlinien, Beitragsrichtlinien und dem Verhaltenskodex des Projekts.
Ausführliche Informationen finden Sie in der technischen Dokumentation. Für den Einstieg ist das Schreibprogramm „Hello, world“ exrwriter.cpp
wie folgt:
#include <ImfRgbaFile.h> #include <ImfArray.h> #include <iostream> int main() { try { int width = 10; int height = 10; Imf::Array2D<Imf::Rgba> pixels(width, height); for (int y=0; y<height; y++) for (int x=0; x<width; x++) pixels[y][x] = Imf::Rgba(0, x / (width-1.0f), y / (height-1.0f)); Imf::RgbaOutputFile file ("hello.exr", width, height, Imf::WRITE_RGBA); file.setFrameBuffer (&pixels[0][0], 1, width); file.writePixels (height); } catch (const std::exception &e) { std::cerr << "Unable to read image file hello.exr:" << e.what() << std::endl; return 1; } return 0; }
Die zu erstellende CMakeLists.txt
:
cmake_minimum_required(VERSION 3.12) project(exrwriter) find_package(OpenEXR REQUIRED) add_executable(${PROJECT_NAME} exrwriter.cpp) target_link_libraries(${PROJECT_NAME} OpenEXR::OpenEXR)
Zu bauen:
$ cmake -S . -B _build -DCMAKE_PREFIX_PATH=<path to OpenEXR libraries/includes> $ cmake --build _build
Weitere Einzelheiten finden Sie unter Die OpenEXR-API.
Eine Frage stellen:
E-Mail: [email protected]
Slack: academysoftwarefdn#openexr
Nehmen Sie an einer Besprechung teil:
Die Sitzungen des Technischen Lenkungsausschusses sind alle zwei Wochen donnerstags um 13:30 Uhr pazifischer Zeit für die Öffentlichkeit zugänglich.
Kalender: https://lists.aswf.io/g/openexr-dev/calendar
Besprechungsnotizen: https://wiki.aswf.io/display/OEXR/TSC+Meetings
Einen Fehler melden:
Senden Sie ein Problem: https://github.com/AcademySoftwareFoundation/openexr/issues
Melden Sie eine Sicherheitslücke:
E-Mail an [email protected]
Tragen Sie einen Fix, eine Funktion oder eine Verbesserung bei:
Lesen Sie die Beitragsrichtlinien und den Verhaltenskodex
Unterzeichnen Sie die Mitwirkenden-Lizenzvereinbarung
Senden Sie eine Pull-Anfrage: https://github.com/AcademySoftwareFoundation/openexr/pulls
Website: http://www.openexr.com
Technische Dokumentation: https://openexr.readthedocs.io
Portierungshilfe: OpenEXR/Imath Version 2.x auf 3.x Portierungshandbuch
Referenzbilder: https://github.com/AcademySoftwareFoundation/openexr-images
Sicherheitsrichtlinie: SECURITY.md
Versionshinweise: CHANGES.md
Mitwirkende: CONTRIBUTORS.md
OpenEXR ist unter der BSD-3-Klausel-Lizenz lizenziert.