12 Temmuz 2011, Salı
RGB beyaz üzerinde temsil etmek için dönüştürün
Bir dönüştürülmüş istediğim bir onaltılık renk var, #F4F8FB
örneğin (rgb(244, 248, 251)
)-şeffaf-olarak-mümkünbeyaz renk üzerinde görüntülendiğinde () temsil etmek. Mantıklı mı? Bir algoritma, ya da en azından bunu yapmak için nasıl bir algoritma fikri arıyorum.
Örneğin:
rgb( 128, 128, 255 ) --> rgba( 0, 0, 255, .5 )
rgb( 152, 177, 202 ) --> rgba( 50, 100, 150, .5 ) // can be better(lower alpha)
Fikirler?
BİLGİNİZE Guffa cevabı dayalı çözüm:
function RGBtoRGBA(r, g, b){
if((g==void 0) && (typeof r == 'string')){
r = r.replace(/^\s*#|\s*$/g, '');
if(r.length == 3){
r = r.replace(/(.)/g, '$1$1');
}
g = parseInt(r.substr(2, 2), 16);
b = parseInt(r.substr(4, 2), 16);
r = parseInt(r.substr(0, 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)'
}
CEVAP
12 Temmuz 2011, Salı
En düşük renk bileşeni almak ve bir alfa değeri dönüştürmek. O zaman en düşük çıkarma ve alfa değeri bölerek renk bileşenleri ölçek.
Örnek:
152 converts to an alpha value of (255 - 152) / 255 ~ 0.404
152 scales using (152 - 152) / 0.404 = 0
177 scales using (177 - 152) / 0.404 ~ 62
202 scales using (202 - 152) / 0.404 ~ 123
Yani, rgb(152, 177, 202)
rgba(0, 62, 123, .404)
olarak görüntüler.
Renkler gerçekten mükemmel maç Photoshop doğrulandı.
Bunu Paylaş:
Nasıl iPhone SDK üzerinde etkin bir İn...
Nasıl bir hizmet Android üzerinde çalı...
Nasıl Android üzerinde internet erişim...
Nasıl bir özellik bir ExpandoObject üz...
'in ne kontrol etmek için en iyi ...