سؤال

وكما هو معروف لون الخلفية المحدد.

وتخيل خط مكافحة مستعارة على خلفية خضراء. الآن نريد أن تغيير لون الخلفية من الصورة إلى اللون الأحمر.

وهكذا .. كيف يمكنني استخراج "غير الخلفية" جزء من لون من بكسل وإضافته (أو "مزيج") على رأس اللون BG آخر بعد ذلك؟

ونحن نعرف أيضا لون الخط، لذلك نحن نعرف ما هي بكسل مبهمة تماما.

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

المحلول

وكل بكسل في الصورة هو إما لون الخلفية، لون الخط، أو بعض مزيج من الاثنين. لذلك يمكن أن تحدد الصورة كاملة مع القيم الأساسية RGB، قيم RGB الخط، ومجموعة من القيم بين 0 و 1، حيث، مثلا، 0 يعني بكسل لون الخلفية (1)، يعني بكسل لون الخط. قيمة مثل 0.1 يعني أن بكسل في الغالب لون الخلفية مع لون الخط قليلا، وما إلى ذلك.

وتعبير مثل:

blend_value = ((pixel.R - bg.R) / (font.R - bg.R)
              + (pixel.G - bg.G) / (font.G - bg.G)
              + (pixel.B - bg.B) / (font.B - bg.B)) / 3

وسوف تعطيك هذه القيم عن أي بكسل في الصورة. لبناء القيم RGB جديدة باستخدام لون خلفية جديدة، يمكنك استخدام هذه القيمة لمزج لون الخط مع لون خلفية جديدة.

new_pixel.R = blend_value * font.R + (1 - blend_value) * new_bg.R
new_pixel.G = blend_value * font.G + (1 - blend_value) * new_bg.G
new_pixel.B = blend_value * font.B + (1 - blend_value) * new_bg.B
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top