দুটি রঙের মধ্যে রঙের একটি সিরিজ তৈরি করা


15

একটি প্রারম্ভিক রঙ এবং একটি শেষ রঙ দেওয়া হয়েছে, তাদের মধ্যে কি আলগোরিদমিকভাবে বিভিন্ন রং তৈরি করা সম্ভব? উদাহরণস্বরূপ, নীচের চিত্রের শুরু এবং শেষদিকে নীল / ধূসর হালকা এবং গা dark় শেডগুলি দেওয়া, আমি কীভাবে মধ্যবর্তী ছায়াগুলি তৈরি করতে পারি?

এখানে চিত্র বর্ণনা লিখুন

একটি সম্ভাব্য সমাধান যা আমি বিবেচনা করছি তা হ'ল দুটি রঙ থেকে গ্রেডিয়েন্ট তৈরি করা এবং তারপরে সেই গ্রেডিয়েন্টের সাথে সামঞ্জস্যপূর্ণ পয়েন্টগুলিতে রঙটি নমুনা করা। এটি কি সেরা পন্থা হতে পারে?



বিষয়টির উপর একটি আরও ভাল নিবন্ধ: ভিশু.ন.টেল
কাঁটা

উত্তর:


13

একে কালার ইন্টারপোলেশন বলা হয় । এটি হুডের নীচে গ্রেডিয়েন্টগুলি কী করে। আপনি বিভিন্ন উপায় এবং পদ্ধতি ব্যবহার করে এটি করতে পারেন, এবং ফলাফলগুলি কীভাবে বিভক্ত হয় তা পদ্ধতির উপর নির্ভর করে।

আমি সাধারণত জাভাস্ক্রিপ্ট ব্যবহার করে ওয়েব প্রকল্পগুলির জন্য এটি করি যাতে আমি গতিময়রূপে রঙ পরিবর্তন করতে পারি, যেমন এই সঙ্গীত ভিজ্যুয়ালাইজারে । একটি জাভাস্ক্রিপ্ট বাস্তবায়ন যার উপরের উদাহরণ থেকে টানা আরজিবি ব্যবহার করে লিনিয়ার ইন্টারপোলেশনের খুব সোজা পদ্ধতি রয়েছে:

জীবন্ত উদাহরণ

// Returns a single rgb color interpolation between given rgb color
// based on the factor given; via https://codepen.io/njmcode/pen/axoyD?editors=0010
function interpolateColor(color1, color2, factor) {
    if (arguments.length < 3) { 
        factor = 0.5; 
    }
    var result = color1.slice();
    for (var i = 0; i < 3; i++) {
        result[i] = Math.round(result[i] + factor * (color2[i] - color1[i]));
    }
    return result;
};
// My function to interpolate between two colors completely, returning an array
function interpolateColors(color1, color2, steps) {
    var stepFactor = 1 / (steps - 1),
        interpolatedColorArray = [];

    color1 = color1.match(/\d+/g).map(Number);
    color2 = color2.match(/\d+/g).map(Number);

    for(var i = 0; i < steps; i++) {
        interpolatedColorArray.push(interpolateColor(color1, color2, stepFactor * i));
    }

    return interpolatedColorArray;
}

যা এর মতো ব্যবহৃত হয় এবং আন্তঃবিবাহিত রঙগুলির একটি অ্যারে প্রদান করে:

var colorArray = interpolateColors("rgb(94, 79, 162)", "rgb(247, 148, 89)", 5);

রঙিন দ্রবীকরণের জন্য আপনি ফটোশপ (এবং সম্ভবত অন্যান্য প্রোগ্রাম) এক্সটেনশানগুলিও খুঁজে পেতে পারেন। যাইহোক, আপনি বিরতি দেওয়ার পদ্ধতিটি আপনার ইচ্ছা মতো একই তা পরীক্ষা করে দেখতে চাইলে আপনি কোনও ফাংশনটি ইন্টারপোলেটের ভিত্তিতে ব্যবহার করতে পারেন।


2
জ্যাচ ... আপনি এমন একজন গায়ক ... যে সংগীত ভিজ্যুয়ালাইজারটি বাঁধাই দুর্দান্ত!
রাফেল

@ রাফেল আমি আপনাকে আরও পছন্দ করতে পারে এমন একটি দম্পতি তৈরি করেছি :)
জ্যাচ

ধন্যবাদ। Color Interpolationআমার যা প্রয়োজন ছিল আমি এখানে কিছু সুইফ্ট বাস্তবায়ন পেয়েছি - stackoverflow.com/questions/22868182/uico…
বেন প্যাকার্ড

2
উপরের লিঙ্কটি নষ্ট হয়ে গেছে, তবে ভবিষ্যতের পাঠকদের জন্য পোস্টটি এখানে পাওয়া যাবে: অগ্রগতির মানের উপর ভিত্তি করে ইউআইক্লোর স্থানান্তর
জ্যাচ

23

এই উত্তরটি একবার দেখুন। কোনও প্রদত্ত রঙকে কীভাবে আরও গাer় বা হালকা করা যায়?

যেখানে আপনি কেবল প্রতিটি আরজিবি উপাদানগুলির পৃথক মানগুলি নিয়ে যান এবং মানগুলি ভাগ করে নিন।

তবে আমাদের একটি সমস্যা আছে, রঙ রূপান্তর করার জন্য কেবল একটি উপায় নেই।

এখানে চিত্র বর্ণনা লিখুন

প্রথম এপ্রোচ আপনাকে সংক্ষিপ্ততম রুট দেবে (1) তবে সম্ভবত সেই রুটটি আপনার প্রয়োজন মতো নয়।

এটি রঙিন মডেল বা যুক্তি দ্বারা সজ্জিত। উদাহরণস্বরূপ, ল্যাব * রঙের মডেলটিতে লাল এবং সবুজ পরিপূরক রঙ হয়, সুতরাং সেই মডেলের সংক্ষিপ্ত রুটটি একটি নিরপেক্ষ ধূসর (3) এর মধ্য দিয়ে চলে যাবে।

আপনার যদি কেবল রঙের ছায়াগুলির প্রয়োজন হয় তবে অন্য উত্তরটি উপযুক্ত।


5
আমি গ্রাফিককে আন্তঃবিশ্লেষণের বিভিন্ন পদ্ধতিগুলি দেখায়
জ্যাচ সাউসিয়ের

আমি অনুমান করি এর অর্থ এই যে কৌশল কৌশলকে কোডিফাই করার উপায় আছে be
বাও থিয়েন এনজিও

10

আরজিবি বা সিএমওয়াইকে যে কোনও একটিতে ইলাস্ট্রেটে একটি মিশ্রণ ব্যবহার করুন:

  • প্রারম্ভ এবং শেষ বর্ণের সাথে প্রতিটি দুটি আকার তৈরি করুন (এই ধরণের একটি ধূসর এবং একটি কালো, তবে আপনার যা প্রয়োজন তা চয়ন করুন)
  • আপনার Object → Blend → Blend Optionsমধ্যে কতগুলি Specified stepsপ্রয়োজন তা টাইপ করুন (নীচে আমার উদাহরণে 20)
  • আপনার দুটি বস্তু নির্বাচন করুন এবং চয়ন করুন Object → Blend → Make। এটি এমন মিশ্রণ তৈরি করবে যা আপনি তার মাধ্যমে পৃথক বস্তুতে রূপান্তর করতে পারবেন Object → Expand। তারপরে আপনি প্রতিটি মধ্যবর্তী অবজেক্টের নিজস্ব রঙ কোড সহ দেখতে পাচ্ছেন।

মিশ্রণ


5

এটি অন্যান্য উত্তরের একটি সংযোজন।

আপনি যখন এসআরজিবিতে রঙগুলি বিভক্ত করেন তখন আপনাকে বিবেচনা করতে হবে যে আরজিবি মানগুলি হালকা তীব্রতায় রৈখিক নয় তবে মানুষের অনুভূত আলোক তীব্রতায় রৈখিক। এটি সংরক্ষণের মানগুলিকে সহজ করে তোলে তবে বিভিন্ন রঙের ক্রিয়াকলাপের জন্য রৈখিক রঙ স্পেসে যাওয়া প্রয়োজন।

আলোর তীব্রতার মানুষের উপলব্ধি একটি পাওয়ার আইন অনুসারে হয়, তেমনও

linear = sRGB^2.2
sRGB = linear^(1/2.2)

দুজনের মধ্যে রূপান্তর করতে ব্যবহার করা যেতে পারে। এটি ২.২ এর একটি গামা মান ব্যবহার করে যা এসআরজিবি এর মান। এ সম্পর্কে আরও তথ্যের জন্য এই উইকিপিডিয়া নিবন্ধটি দেখুন।

এই সমস্যার বিশদ বিশ্লেষণ এবং ভুল প্রয়োগের উদাহরণগুলি এখানে পাওয়া যাবে । যার মধ্যে একটি লিনিয়ার এবং এসআরজিবি ইন্টারপোলেশন ব্যবহার করে একটি রঙ গ্রেডিয়েন্ট।


এসআরজিবি মানগুলিকে বিভক্ত করার এটি একটি পদ্ধতি, তবে একজন ব্যক্তির কী করা উচিত তার প্রভাবের উপর নির্ভর করে
জ্যাচ সসিয়ের

এটা ঠিক, তবে লিনিয়ার স্পেসে বিরক্তি হ'ল বাস্তব জীবনে আলোর সাথে ঘটে। সুতরাং এটি করা সবচেয়ে স্বাভাবিক।
হেনজে

1
@ZachSaucier বার মানুষের সংখ্যা সম্পন্ন ক্ষেপক বা নির্দিষ্ট বাইরে জগৎ মধ্যে মিশ্রণ আছে অভিপ্রায় করা লোকেদের অজ্ঞতা বা আলস্য (হয় চিন্তা তারা এটা করেছ সংখ্যা তুলনায় উহু তাই ছোট হয় হয় আরজিবি এটা করছেন, অথবা (সঠিকভাবে বা না) চিন্তা করা যে পার্থক্যটি গুরুত্বহীন)
17'9

1

ফটোশপের গ্রেডিয়েন্ট (বা আই এর সমতুল্য "মিশ্রিত") ইতিমধ্যে শুরু এবং শেষ রঙের মধ্যে লিনিয়ার রঙের রূপান্তর পাওয়ার উপায় হিসাবে উপস্থাপিত হয়েছে। কিছু স্ক্রিপ্টিং কোড প্রোগ্রাম না করে আমরা কীভাবে ননলাইনার (একটি বাঁকা ট্রানজিশন পাথ) পাব?

একটি সমাধান হ'ল সামঞ্জস্য স্তর বা মিশ্রণ মোড বা উভয় দ্বারা গ্রেডিয়েন্ট ট্রানজিশন পাথটি পরিবর্তন করা। এটি সত্যিই প্রারম্ভের রঙ থেকে শেষ রঙে অবিচ্ছিন্ন রূপান্তর ঘটায়, যদি পরিবর্তনকারী স্তরগুলির একটি স্তর মুখোশ থাকে যা অবিচ্ছিন্ন থাকে এবং শুরুতে এবং শেষে স্নেহ = জিরো করে তোলে।

এখানে বেশ জটিল মোচড়। স্তর "একা লক্ষ্য" এর গ্রেডিয়েন্ট এবং স্তর রয়েছে "মোডিফায়ার" মিশ্রণ মোডের মাধ্যমে একটি ধারাবাহিক রঙ শিফট তৈরি করে "রঙ" সমস্ত মোচড়ানোর জন্য, সংশোধক নিজেই একটি গ্রেডিয়েন্ট।

আরও মোচড় একটি সমন্বয় স্তর "কার্ভস" দ্বারা বিভক্ত হয় যা বিপরীতে যুক্ত করে। এটির সংশোধক হিসাবে একই স্তরের মুখোশ রয়েছে তবে এটি বাধ্যতামূলক নয়। কোনও মাস্ক ঠিক আছে, যদি এটি শুরুতে এবং শেষদিকে অবিচ্ছিন্ন এবং কালো হয়।

কিছু অনিয়মিত মিশ্রণ মোড এবং বক্ররেখা উপস্থিত রয়েছে যা হঠাৎ লাফ দেয়। এর মধ্যে একটি হিউ "হিউ"। প্রভাবটি নষ্ট করার আরেকটি সম্ভাবনা হ'ল "পরিবর্তন নয়", সমস্ত শূন্য বা সমস্ত 255 এ ক্লিপিংয়ের কারণে দৃশ্যমান ধ্রুবক রঙের অঞ্চল I সম্ভবত এটি মোটেই না, কারণ আমাদের এখনও কেবল 24 বিট / পিক্সেল অনস্ক্রিন রয়েছে।

পরিবৃত্তি

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