تحويل البيانات الخام
تحويل البيانات الخام
لتحسين أداء واجهة برمجة التطبيقات Aspose.PSD ، قمنا بإدخال طريقة لمعالجة البيانات الخام مع الإصدار 2.4.0. تُستخدم معالجة البيانات الخام داخليًا الآن وتمتلك واجهة برمجة خارجية حتى يمكن استخدامها من خارج المكتبة لتحسين الأداء العام. أحيانًا يصبح التعامل مع عملية المعالجة قليلاً معقدًا ويحتاج إلى شرح بعض الأحيان. تتوفر معالجة البيانات الخام حاليًا فقط لتنسيق BMP.
لمساعدة المطورين على الحصول على أفضل أداء ، توفر واجهة برمجة التطبيقات Aspose.PSD نظام لمعالجة البيانات الخام الذي يحتوي على واجهة برمجة خارجية للتخصيص. يقوم المطورون بطلب LoadRawData و SaveRawData من أجل استخدام معالجة البيانات الخام. تتطلب هذه الطرق أيضًا تعيين تنسيق البيانات الخام المطلوب باستخدام صنف RawDataSettings. يسمح صنف RawDataSettings للمطورين بتحديد أي تنسيق بيانات خام. ومع ذلك ، من أجل تحقيق أفضل أداء ، يتعين عليك استخدام تنسيق البيانات الخام الذي يتم تخزين البيانات فيه. يساعد صنف RawDataSettings الذي يعرف في RasterImage في تحديد تنسيق البيانات الخام للصورة. عند تمرير مثيل RawDataSettings إلى طريقة LoadRawData ، يتم إرجاع البيانات كما هي دون تطبيق أي تحويل ، مما قد يحسن الأداء. من ناحية مقابلة ، يجب عليك الاعتناء ببيانات تخزين التنسيقات الخام المختلفة التي قد تكون في بعض الأحيان معقدة قليلا.
لتبسيط عملية التعامل ، على حساب بعض العقوبات على الأداء ، يمكنك تحديد RawDataSettings المطلوبة من خلال إنشاء وتهيئة كائن الطبقة بالإعدادات الخام المطلوبة. هناك حالات يتعذر فيها إمكانية إرجاع البيانات الخام بالتنسيق المحدد (على سبيل المثال ، لا تتوفر تحويل من مساحة الألوان CMYK إلى RGB في الإصدار 2.4.0). علاوة على ذلك، قد تظهر سيناريوهات عندما لا تتوفر معالجة البيانات الخام على الإطلاق لتنسيق الصورة. من أجل تحديد ما إذا كان بإمكانك استخدام أسرة طرق LoadRawData و SaveRawData ، عليك استعلام الخاصية IsRawDataAvailable.
رؤية
بالنسبة لتنسيق بيانات البكسل اللونية RGB ، تتوفر صيغ بيانات خام مؤشرة (قائمة الألوان) ومبنية على RGB. تحتوي صيغ البيانات الخام المؤشرة على مؤشرات إدخال طيف الألوان في النطاق 1..(2^bis count - 1). تحتوي صيغ البيانات الخام المؤشرة على 1 و 2 و 4 و 8 بت لكل بكسل. بقية الصيغ مبنية على RGB. عند تحميل البيانات الخام ، تأكد من أن هناك كافية بايتات متاحة لتحميل البيانات ، وإلا سيتم رمي استثناء مناسب. يمكنك ببساطة تقدير حجم مصفوفة البايتات عن طريق مضاعفة حجم السطر بالأسطر المطلوبة. يمكن أن يتغير حجم السطر ويعتمد على تنسيق تخزين البيانات الخام.
لتحقيق أفضل أداء ، استخدم دائمًا حجم سطر بيانات خام يساوي قيمة RasterImage.RawLineSize. ومع ذلك ، في بعض الأحيان قد تحتاج إلى إضافة تبعية إضافية إلى صفوف البيانات الخام ، أو تقليلها ، وعندما يكون هذا هو الحال قد يتم استخدام حجم سطر مختلف. إذا كان مطلوبًا تحديد جزء من مستطيل تحديد الصورة ، فتأكد من ميل البتات الذي قد يحدث لتنسيقات RGB للبكسل المؤشرة. على سبيل المثال ، دعونا نفترض صورة بأبعاد 100x100 بكسل وتنسيق بيانات خام 1 بت لكل بكسل. تريد تحميل مستطيل البيانات الخام بالموقع (7،0) والأبعاد (2،1) ، أو بتعبير آخر ، تحتاج إلى 2 بكسل تبدأ من x = 7 و y = 0. في هذه الحالة، يجب أن تتلقى التخطيط التالي:
هذا يعني أنك تتلقى 2 بايت حيث يحتوي البايت الأول على 7 بكسلًا غير مرغوب فيها، ثم بكسل مرغوب فيه، ويحتوي البايت الثاني على بكسل مرغوب فيه ثم 7 غير مرغوب فيهم. قد تسأل لماذا لم نقم بتحويل البيانات ووضع تلك البكسل في بايت واحد؟ الجواب بسيط: للحفاظ على الأداء العالي. يتم تنفيذ كل المعالجات الداخلية عادةً مع جميع البيانات بدءًا من أول بكسل وانتهاءً بالبكسل الأخير المتاح. هناك حالات نادرة عندما يكون هناك حاجة إلى جزء فرعي من بكسل. بالإضافة إلى ذلك، ليس لدينا فكرة عن كيفية معالجة تلك البكسل لاحقًا لذلك سيقلل التحويل من الأداء ويجعل الرمز غير ضروري عقد العديد من المرات. قم دائمًا بتقدير البت الصحيح (لا حاجة إلى تحديد البايت الصحيح لأن البيانات تأتي دائمًا مع أول بايت مملوء) حيث ستبدأ البكسلات التي تطلب.
تحويل الألوان القياسي RGB المؤشرة
للحصول على أداء أقصى قدر ممكن ، استخدم دائمًا نفس إعدادات بيانات البكسل الخام وتنسيقات البكسل وأحجام الأسطر. ومع ذلك ، في بعض الأحيان قد تحتاج إلى أداء تحويل البيانات. على سبيل المثال ، قد تقوم بتحميل صورة RGB بـ 1 بت لكل بكسل وحفظها بـ 2 بت لكل بكسل، أو تحميل صورة RGB بـ 4 بت وتخفيض نطاق ألوانها إلى 2 بت لكل بكسل. في كلا الحالتين ، يجب تطبيق تحويل الألوان. تحويل صور RGB المؤشرة يمكن أن يكون صعبًا أحيانًا ولا يمكن تنفيذه بدون تطبيق بعض الإعدادات. يجب علينا تحديد كيفية تعيين مجموعة الألوان المصدرية إلى مساحة الألوان المستهدفة. لتنجز هذه المهمة يجب أن نملك طرق مختلفة:
- تعيين اللوحة (DitheringMethods.PaletteConversion)
- تعيين البيانات الخام (DitheringMethods.PaletteIgnore)
- التحويل المخصص (DitheringMethods.CustomConverter)
عند استخدام تحويل اللوحة ، فإن مساحة الألوان المصدرية تحاول مطابقة مساحة الألوان المستهدفة بأقرب ما يمكن. على سبيل المثال ، لنفترض أن لدينا صورة 4 بت مع الألوان التالية: [0] RGB=0, 0, 0 [1] RGB=17, 17, 17 [2] RGB=34, 34, 34 [3] RGB=51, 51, 51 [4] RGB=68, 68, 68 [5] RGB=85, 85, 85 [6] RGB=102, 102, 102 [7] RGB=119, 119, 119 [8] RGB=136, 136, 136 [9] RGB=153, 153, 153 [10] RGB=170, 170, 170 [11] RGB=187, 187, 187 [12] RGB=204, 204, 204 [13] RGB=221, 221, 221 [14] RGB=238, 238, 238 [15] RGB=255, 255, 255
تبدو الصورة المصدرية على النحو التالي:
ونقوم بتحويل صورة 4 بت إلى صورة 1 بت مع الألوان المؤشرة المحددة التالية:
[0] RGB = 0, 0, 0 [1] RGB = 255, 255, 255
في وضع تحويل اللوحة ، يقرأ المحوِّل مساحة الألوان المصدرية ويحدد مؤشر المستهدف باستخدام طريقة لوحة الهدف GetNearestColorIndex. يتم استخدام قيمة RasterImage.RawFallbackIndex في حالة أعطى طريقة GetNearestColorIndex تصفي شاشة مواصلة خارج النطاق. يحول هذا اللون المصدري للألوان الهدف بمقدار قيم الكثافة. تطابق الصورة الهدف الصورة المصدرية بأقرب ما يكون. يمكنك أن ترى النتيجة التالية:
في وضع تعيين البيانات الخام تُستخدم سيناريو مختلف. ببساطة يتم تجاهل لوحتى الألوان المصدر والهدف ويتم تطابق فهرسات المصدر على فهرسات الوجهة. عندما يتم العثور على قيمة لا يمكن تحويلها إلى نطاق الوجهة (عند تقليل عدد البتات) ، يتم استخدام قيمة خاصية RasterImage.RawFallbackIndex. القيمة الافتراضية هي 0 وستتم تحويلها إلى اللون الأول في لوحة الألوان الهدف. إذا كانت قيمة هذه الخاصية خارج نطاق الوجهة ، سيتم رم