একটি আরজিবি মান দেওয়া, আমি কীভাবে একটি ছোঁয়া (বা ছায়া) তৈরি করব?


124

একটি আরজিবি মান দেওয়া হয়েছে, যেমন 168, 0, 255, আমি কীভাবে রঙের টিন্টগুলি (এটি হালকা করব) এবং শেডগুলি (আরও গা it় করে তুলি) তৈরি করব?

উত্তর:


153

শেডিং এবং টিংটিংয়ের বিভিন্ন বিকল্পের মধ্যে :

  • শেডগুলির জন্য, প্রতিটি উপাদানটিকে তার পূর্ববর্তী মানের 1/4, 1/2, 3/4, ইত্যাদি দ্বারা গুণান। ফ্যাক্টর যত ছোট হবে, শেড আরও গা shade় হবে।

  • টিন্টের জন্য, গণনা করুন (255 - পূর্ববর্তী মান), এটি 1/4, 1/2, 3/4, ইত্যাদি দ্বারা গুণিত করুন (বৃহত্তর ফ্যাক্টর, হালকা রঙটি), এবং এটি পূর্বের মানটিতে যোগ করুন (প্রতিটি ধরে নিচ্ছেন) । কম্পোমেন্টটি একটি 8-বিট পূর্ণসংখ্যা))

নোট করুন যে রঙের ম্যানিপুলেশনগুলি (যেমন টিন্ট এবং অন্যান্য শেড) লিনিয়ার আরজিবিতে করা উচিত । তবে, ডকুমেন্টগুলিতে নির্দিষ্ট হওয়া বা চিত্র এবং ভিডিওতে এনকোড হওয়া আরজিবি রঙগুলি লিনিয়ার আরজিবিতে হওয়ার সম্ভাবনা নেই , সেক্ষেত্রে আরজিবি রঙের প্রতিটি উপাদানগুলিতে তথাকথিত বিপরীত স্থানান্তর ফাংশন প্রয়োগ করা প্রয়োজন। আরজিবি রঙের জায়গার সাথে এই ফাংশনটি পরিবর্তিত হয়। উদাহরণস্বরূপ, জগৎ রঙ স্থান (যদি আরজিবি রঙ স্থান অজানা অধিকৃত করা যেতে পারে), এই ফাংশন মোটামুটিভাবে 2.2 একটি ক্ষমতা প্রতিটি জগৎ রঙ উপাদান (0 থেকে 1 মাধ্যমে ছোটো) উত্থাপন সমতুল্য। (মনে রাখবেন যে "লিনিয়ার আরজিবি" কোনও আরজিবি রঙের স্থান নয়))

"গামা সংশোধন" সম্পর্কে ভায়োলেট জিরাফের মন্তব্যও দেখুন।


20
আমি এটি চেষ্টা করেছিলাম এবং এটি দুর্দান্ত কাজ করেছে। আমি ভেবেছিলাম সূত্রগুলির উদাহরণ লিখতে এটি সহায়ক হবে। আসল (আর, জি, বি); শেড (টাকা, GS, BS): rs = r * 0.25, gs = g * 0.25, bs = b * 0.25(যে একটি প্রশংসনীয় অন্ধকার আলোছায়া হয়); আভা (RT, GT, BT): rt = r + (0.25 * (255 - r)), gt = g + (0.25 * (255 - g)), bt = b + (0.25 * (255 - b))(যে একটি প্রশংসনীয় হালকা আভা যায়)। আমি এটি একটি শীতল অ্যারের অংশ হিসাবে করেছি যা প্রচুর রং তৈরি করে এবং এটি দুর্দান্ত কাজ করে। আশা করি এইটি কাজ করবে. ধন্যবাদ পিটার
থমাস

1
আপনি একটি ভুল করেছেন। এটা বিপরীত।
ফ্রান্সেস্কো মেনজানি

আপনি কি নিশ্চিত যে এই ম্যানিপুলেশনগুলি গামা সংশোধনের জন্য অ্যাকাউন্ট না করা উচিত?
ভায়োলেট জিরাফ

1
@ ভায়োলেটজিরাফ: আপনি গামা সংশোধন করে একটি ভাল পয়েন্ট করেছেন। আমার সম্পাদনা দেখুন। (এটি আমার 22 ঘন্টা আগে একটি মুছে ফেলা মন্তব্য প্রতিস্থাপন।)
পিটার ও।

97

কিছু সংজ্ঞা

  • একটি গা shade ় রঙকে "গা "় করা" বা "কালো যুক্ত করে" একটি ছায়া তৈরি করা হয়
  • একটি রঙিন রঙ "ligthening" বা "সাদা যোগ" দ্বারা উত্পাদিত হয়

একটি আভা বা ছায়া তৈরি করা

আপনার রঙের মডেলের উপর নির্ভর করে আরও গা methods় (শেডযুক্ত) বা হালকা (রঙিন) রঙ তৈরি করার জন্য বিভিন্ন পদ্ধতি রয়েছে:

  • RGB:

    • ছায়া গো:

      newR = currentR * (1 - shade_factor)
      newG = currentG * (1 - shade_factor)
      newB = currentB * (1 - shade_factor)
      
    • রঙিন করতে:

      newR = currentR + (255 - currentR) * tint_factor
      newG = currentG + (255 - currentG) * tint_factor
      newB = currentB + (255 - currentB) * tint_factor
      
    • আরও সাধারণভাবে, রঙের RGB(currentR,currentG,currentB)সাথে একটি রঙের সাথে লেয়ার যুক্ত রঙ RGBA(aR,aG,aB,alpha)হয়:

      newR = currentR + (aR - currentR) * alpha
      newG = currentG + (aG - currentG) * alpha
      newB = currentB + (aB - currentB) * alpha
      

    যেখানে (aR,aG,aB) = black = (0,0,0)শেডিং এবং (aR,aG,aB) = white = (255,255,255)টিন্টিংয়ের জন্য

  • HSVবা HSB:

    • শেড করতে: কম Value/ Brightnessবা বৃদ্ধিSaturation
    • রঙিন করার জন্য: নীচে Saturationবা বাড়ান Value/Brightness
  • HSL:
    • শেড করতে: কম Lightness
    • রঙিন: বৃদ্ধি Lightness

এক রঙের মডেল থেকে অন্য রঙে রূপান্তর করার সূত্র রয়েছে। আপনার প্রাথমিক প্রশ্ন অনুসারে, আপনি যদি রয়েছেন এবং উদাহরণস্বরূপ ছায়া দেওয়ার জন্য মডেলটি RGBব্যবহার করতে চান HSV, আপনি কেবল রূপান্তর করতে HSVপারেন, শেডিং করতে এবং আবার রূপান্তর করতে পারেন RGB। রূপান্তর করার সূত্রটি তুচ্ছ নয় তবে ইন্টারনেটে পাওয়া যাবে। আপনার ভাষার উপর নির্ভর করে এটি একটি মূল ফাংশন হিসাবেও উপলব্ধ হতে পারে:

মডেলদের তুলনা

  • RGB বাস্তবায়নের জন্য সত্যই সহজ হওয়ার সুবিধা রয়েছে তবে:
    • আপনি কেবল তুলনামূলকভাবে আপনার রঙ ছায়া বা রঙিন করতে পারেন
    • আপনার রঙ ইতিমধ্যে রঙিন বা ছায়া গোছানো আছে কিনা আপনার কোনও ধারণা নেই
  • HSVবা HSBজটিল ধরনের কারণ আপনার যা চান তা পেতে আপনার দুটি পরামিতি নিয়ে খেলতে হবে ( Saturation& Value/ Brightness)
  • HSL আমার দৃষ্টিকোণ থেকে সেরা:
    • CSS3 দ্বারা সমর্থিত (ওয়েব অ্যাপের জন্য)
    • সহজ এবং নির্ভুল:
      • 50% একটি অবারিত হিউ মানে
      • >50% মানে হিউ হালকা (রঙিন)
      • <50% মানে হিউ গাer় (শেড)
    • কোনও রঙ দেওয়া হলে আপনি তা নির্ধারণ করতে পারবেন এটি ইতিমধ্যে রঙিন বা শেডযুক্ত
    • আপনি তুলনামূলকভাবে বা একেবারে কোনও রঙকে ছায়া বা ছায়া দিতে পারেন (কেবলমাত্র Lightnessঅংশটি প্রতিস্থাপন করে )


1
আমি এখানে বিশ্বাস করি "ছায়া" গা dark় করা "একটি হিউ দ্বারা উত্পাদিত হয় , রঙ দ্বারা, আপনি রঙ বোঝায়। কারণ আপনি যদি এইচএসএল / এইচএসভির মতো বর্ণের কথা বলছেন তবে এটি পরিবর্তন করা কোনও ছায়া / রঙ নয়, ভিন্ন রঙের উত্পাদন করবে। হিউ (0-360 °) নিজে থেকে, আরও গাer় / হালকা পেতে পারে না। রঙিন ছায়া / রঙ দিতে, একটিতে এসএল / এসভি মান পরিবর্তন করতে হবে। এই সংজ্ঞাটি রঙ বদলে ভাবতে কাউকে বিভ্রান্ত করতে পারে আরও গা dark় / হালকা রঙের উত্পাদন করবে।
আকিনুরি

শেড সংস্করণটি কেবল রঙিন রেঞ্জের জন্য কাজ করে 0. থেকে শুরু করে রঙ চ্যানেল মানটিতে আপনার রঙের অর্ধেক যোগ করুন, তারপরে গণিত করুন এবং আবার সেই ব্যাপ্তিকে বিয়োগ করুন। যদি আপনার রঙটি স্বাক্ষরিত হয় এবং আপনি কোনও কিছু ধ্বংস না করে গণনাটি করতে পারেন কারণ অতিরিক্ত প্রবাহের কারণে এটি কাজ করে।
t0b4cc0

3

আমি বর্তমানে ক্যানভাস এবং পিক্সেল নিয়ে পরীক্ষা নিরীক্ষা করছি ... আমি এই যুক্তিটি আমার পক্ষে আরও ভাল কাজ করে দেখছি।

  1. ধূসর নেস (লুমা?) গণনা করতে এটি ব্যবহার করুন
  2. তবে বিদ্যমান মান এবং নতুন 'রঙিন' মান উভয়ই
  3. পার্থক্য গণনা করুন (আমি পেয়েছি আমার গুণ করার প্রয়োজন নেই)
  4. 'tint' মান অফসেট যোগ করুন

    var grey =  (r + g + b) / 3;    
    var grey2 = (new_r + new_g + new_b) / 3;
    
    var dr =  grey - grey2 * 1;    
    var dg =  grey - grey2 * 1    
    var db =  grey - grey2 * 1;  
    
    tint_r = new_r + dr;    
    tint_g = new_g + dg;   
    tint_b = new_b _ db;
    

বা এরকম কিছু ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.