سؤال

عند معالجة مستند XML مفتوحًا ، يمكن أن يكون للألوان تحويلات مختلفة لتطبيقها على لون أساسي لإنشاء لون نسبي. على سبيل المثال <a:satMod value="25000"> من شأنه تعديل تشبع الألوان الأساسية بنسبة 25 ٪. هناك نوعان من التحويلات تمكنت من العثور على القليل من المعلومات حولهما وهما:

<a:gamma> 

تقول المستندات "هذا العنصر يحدد أن لون الإخراج الذي يتم تقديمه بواسطة تطبيق توليد يجب أن يكون تحول Gamma SRGB من لون الإدخال."

و

<a:invGamma>

تقول المستندات "هذا العنصر يحدد أن لون الإخراج الذي يتم تقديمه بواسطة تطبيق توليد يجب أن يكون تحول Gamma SRGB العكسي من لون الإدخال."

أود أن أفهم ما هو الحساب الذي يجب علي القيام به على اللون الأساسي لتحويله باستخدام أي من هذه التحولات. هل احسب أي شخص هذا؟

هل كانت مفيدة؟

المحلول

نعم. ببساطة،

  • <a:gamma> ببساطة يعني أخذ قيمة SRGB (مقياس 0-1) وتخطيها (تحويل إلى RGB الخطية). خذ هذه القيم RGB الخطية وحفظها كـ SRGB (وتحويلها إلى نطاق 0-255 إذا كنت تريد).
  • <a:invGamma> هو عكس ذلك - خذ قيمة RGB الخطية (0-1 مقياس) وقم بتحريرها (تحويل إلى SRGB). خذ هذه قيم RGB المحددة وحفظها كـ SRGB (وتحويلها إلى نطاق 0-255 إذا كنت تريد).

إذن ما هو RGB الخطي؟ الحساب هو هنا على صفحة SRGB في ويكيبيديا.

إليك أيضًا إصدار VBA:

Public Function sRGB_to_linearRGB(value As Double) 
   If value < 0# Then 
      sRGB_to_linearRGB = 0# 
      Exit Function 
   End If 
   If value <= 0.04045 Then 
      sRGB_to_linearRGB = value / 12.92 
      Exit Function 
   End If 
   If value <= 1# Then 
      sRGB_to_linearRGB = ((value + 0.055) / 1.055) ^ 2.4 
      Exit Function 
   End If 
   sRGB_to_linearRGB = 1# 
End Function 

Public Function linearRGB_to_sRGB(value As Double) 
   If value < 0# Then 
      linearRGB_to_sRGB = 0# 
      Exit Function 
   End If 
   If value <= 0.0031308 Then 
      linearRGB_to_sRGB = value * 12.92 
      Exit Function 
   End If 
   If value < 1# Then 
      linearRGB_to_sRGB = 1.055 * (value ^ (1# / 2.4)) - 0.055 
      Exit Function 
   End If 
   linearRGB_to_sRGB = 1# 
End Function 

ال value أن تنقلها هو مكون R ، G ، B في نطاق 0-1 ، إما SRGB أو RGB الخطي. ستتلقى نفس النطاق مرة أخرى ، 0-1 ، واعتمادًا على احتياجاتك ، يمكنك بعد ذلك التحويل إلى نطاق 0-255 لبناء لونك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top