OpenEXR นำเสนอข้อกำหนดและการอ้างอิงการใช้งานรูปแบบไฟล์ EXR ซึ่งเป็นรูปแบบการจัดเก็บภาพระดับมืออาชีพของอุตสาหกรรมภาพยนตร์
วัตถุประสงค์ของรูปแบบ EXR คือเพื่อแสดงข้อมูลภาพเชิงเส้นช่วงไดนามิกสูง และข้อมูลเมตาที่เกี่ยวข้องอย่างถูกต้องและมีประสิทธิภาพ พร้อมการสนับสนุนที่แข็งแกร่งสำหรับกรณีการใช้งานหลายส่วนและหลายช่องทาง
OpenEXR ถูกนำมาใช้กันอย่างแพร่หลายในซอฟต์แวร์แอปพลิเคชันโฮสต์ ซึ่งความแม่นยำเป็นสิ่งสำคัญ เช่น การเรนเดอร์ภาพเสมือนจริง การเข้าถึงพื้นผิว การจัดองค์ประกอบภาพ การจัดองค์ประกอบเชิงลึก และ DI
เป้าหมายของโครงการ OpenEXR คือการรักษารูปแบบ EXR ที่เชื่อถือได้และทันสมัย และเพื่อรักษาตำแหน่งเป็นรูปแบบภาพที่ต้องการสำหรับการสร้างเนื้อหาความบันเทิง
การแก้ไขหลักๆ เกิดขึ้นไม่บ่อยนัก และคุณลักษณะใหม่ๆ จะได้รับการชั่งน้ำหนักอย่างรอบคอบเพื่อรับมือกับความซับซ้อนที่เพิ่มขึ้น ลำดับความสำคัญหลักของโครงการคือ:
ความทนทาน ความน่าเชื่อถือ ความปลอดภัย
ความเข้ากันได้ย้อนหลัง ข้อมูลมีอายุยืนยาว
ประสิทธิภาพ - เวลาในการอ่าน/เขียน/การบีบอัด/คลายการบีบอัด
ความเรียบง่าย ใช้งานง่าย การบำรุงรักษา
การนำไปใช้อย่างกว้างขวาง รองรับหลายแพลตฟอร์ม - Linux, Windows, macOS และอื่น ๆ
OpenEXR มีไว้สำหรับข้อมูล 2D เท่านั้น ไม่เหมาะสำหรับการจัดเก็บข้อมูลปริมาตร ฉาก 3 มิติที่แคชไว้หรือมีแสงสว่าง หรือข้อมูล 3 มิติที่ซับซ้อนมากขึ้น เช่น สนามแสง
เป้าหมายของโครงการ Imath คือความเรียบง่าย ความสะดวกในการใช้งาน ความถูกต้องและตรวจสอบได้ และการยอมรับอย่างกว้างขวาง Imath ไม่ได้มีจุดมุ่งหมายให้เป็นแพ็คเกจพีชคณิตเชิงเส้นหรือการวิเคราะห์เชิงตัวเลขที่ครอบคลุม
OpenEXR เป็นโครงการของ Academy Software Foundation ดูนโยบายการกำกับดูแลของโครงการ แนวทางการสนับสนุน และจรรยาบรรณสำหรับข้อมูลเพิ่มเติม
ดูเอกสารทางเทคนิคสำหรับรายละเอียดทั้งหมด แต่ในการเริ่มต้น โปรแกรมเขียน exrwriter.cpp
"Hello, world" คือ:
#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; }
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)
วิธีสร้าง:
$ cmake -S . -B _build -DCMAKE_PREFIX_PATH=<path to OpenEXR libraries/includes> $ cmake --build _build
สำหรับรายละเอียดเพิ่มเติม โปรดดู OpenEXR API
ถามคำถาม:
อีเมล์: [email protected]
หย่อน: academysoftwarefdn#openexr
เข้าร่วมการประชุม:
การประชุมคณะกรรมการกำกับดูแลด้านเทคนิคเปิดให้บุคคลทั่วไปเข้าชม ทุกสองสัปดาห์ในวันพฤหัสบดี เวลา 13.30 น. ตามเวลาแปซิฟิก
ปฏิทิน: https://lists.aswf.io/g/openexr-dev/calendar
หมายเหตุการประชุม: https://wiki.aswf.io/display/OEXR/TSC+Meetings
รายงานข้อผิดพลาด:
ส่งปัญหา: https://github.com/AcademySoftwareFoundation/openexr/issues
รายงานช่องโหว่ด้านความปลอดภัย:
ส่งอีเมลไปที่ [email protected]
มีส่วนร่วมในการแก้ไข คุณลักษณะ หรือการปรับปรุง:
อ่านแนวทางการบริจาคและหลักปฏิบัติ
ลงนามในข้อตกลงใบอนุญาตช่างภาพ
ส่งคำขอดึง: https://github.com/AcademySoftwareFoundation/openexr/pulls
เว็บไซต์: http://www.openexr.com
เอกสารทางเทคนิค: https://openexr.readthedocs.io
ความช่วยเหลือในการย้าย: คู่มือการย้าย OpenEXR/Imath เวอร์ชัน 2.x ถึง 3.x
ภาพอ้างอิง: https://github.com/AcademySoftwareFoundation/openexr-images
นโยบายความปลอดภัย: SECURITY.md
บันทึกประจำรุ่น: CHANGES.md
ผู้ร่วมให้ข้อมูล: CONTRIBUTORS.md
OpenEXR ได้รับใบอนุญาตภายใต้ใบอนุญาต BSD-3-Clause