يوفر OpenEXR المواصفات والتنفيذ المرجعي لتنسيق ملف EXR، وهو تنسيق تخزين الصور الاحترافي لصناعة الصور المتحركة.
الغرض من تنسيق EXR هو تمثيل بيانات الصورة الخطية ذات النطاق الديناميكي العالي والبيانات التعريفية المرتبطة بها بدقة وكفاءة، مع دعم قوي لحالات الاستخدام متعددة الأجزاء ومتعددة القنوات.
يُستخدم OpenEXR على نطاق واسع في برامج التطبيقات المضيفة حيث تكون الدقة أمرًا بالغ الأهمية، مثل العرض الواقعي، والوصول إلى النسيج، وتركيب الصور، والتركيب العميق، وDI.
الهدف من مشروع OpenEXR هو الحفاظ على تنسيق EXR موثوقًا وحديثًا والحفاظ على مكانته كتنسيق الصورة المفضل لإنشاء المحتوى الترفيهي.
المراجعات الرئيسية نادرة، وسيتم تقييم الميزات الجديدة بعناية مقابل التعقيد المتزايد. الأولويات الرئيسية للمشروع هي:
المتانة والموثوقية والأمن
التوافق مع الإصدارات السابقة، وطول عمر البيانات
الأداء - وقت القراءة/الكتابة/الضغط/إلغاء الضغط
البساطة وسهولة الاستخدام وقابلية الصيانة
اعتماد واسع النطاق، ودعم متعدد المنصات - Linux، وWindows، وmacOS، وغيرها
OpenEXR مخصص فقط للبيانات ثنائية الأبعاد. إنه غير مناسب لتخزين البيانات الحجمية أو المشاهد ثلاثية الأبعاد المخزنة مؤقتًا أو المضاءة أو البيانات ثلاثية الأبعاد الأكثر تعقيدًا مثل الحقول الضوئية.
تتمثل أهداف مشروع 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.
اطرح سؤالاً:
البريد الإلكتروني: [email protected]
سلاك: academysoftwarefdn#openexr
حضور اجتماع:
اجتماعات اللجنة التوجيهية الفنية مفتوحة للجمهور، كل أسبوعين في أيام الخميس، الساعة 1: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.