আমার একটি হেক্স রঙ রয়েছে, যেমন #F4F8FB
(বা rgb(244, 248, 251)
) যা আমি একটি স্বচ্ছ-যতটা সম্ভব আরজিবা রঙে রূপান্তর করতে চাই (যখন সাদা রঙের উপরে প্রদর্শিত হয়)। ধারণা তৈরী কর? আমি কীভাবে এটি করতে হয় তার জন্য একটি অ্যালগরিদম বা কমপক্ষে একটি অ্যালগরিদমের ধারণা খুঁজছি।
উদাহরণ স্বরূপ:
rgb( 128, 128, 255 ) --> rgba( 0, 0, 255, .5 )
rgb( 152, 177, 202 ) --> rgba( 50, 100, 150, .5 ) // can be better(lower alpha)
ধারনা?
গুফার উত্তরের ভিত্তিতে এফওয়াইআই সমাধান:
function RGBtoRGBA(r, g, b){
if((g == null) && (typeof r === 'string')){
var hex = r.replace(/^\s*#|\s*$/g, '');
if(hex.length === 3){
hex = hex.replace(/(.)/g, '$1$1');
}
r = parseInt(hex.substr(0, 2), 16);
g = parseInt(hex.substr(2, 2), 16);
b = parseInt(hex.substr(4, 2), 16);
}
var min, a = (255 - (min = Math.min(r, g, b))) / 255;
return {
r : r = 0|(r - min) / a,
g : g = 0|(g - min) / a,
b : b = 0|(b - min) / a,
a : a = (0|1000*a)/1000,
rgba : 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')'
};
}
RGBtoRGBA(204, 153, 102) == RGBtoRGBA('#CC9966') == RGBtoRGBA('C96') ==
{
r : 170,
g : 85 ,
b : 0 ,
a : 0.6,
rgba : 'rgba(170, 85, 0, 0.6)'
}