2017-01-23 3 views
1

Das ist ein bisschen schwierig zu sein, geht zu erklären, aber hier ...Entfernen Sie alle Schwarz aus RGB Transparent

Ich brauche einen Weg, die alle schwarz von immer aus einer Farbe, so dass es mehr wie echtes Licht wirkt.

Also zum Beispiel möchte ich RGB (0, 0, 0) zu Transparent anstelle von Schwarz und RGB (127, 127, 127) zu Weiß mit 50% Transparenz anstelle von Grau sein.

Im Moment ich dies mit:

public static int getHexColor(int[] color) { 
    return android.graphics.Color.rgb(color[0], color[1], color[2]); 
} 

Irgendwelche Ideen?

+0

Sie sollten wahrscheinlich nur die Farben beibehalten und stattdessen den Alphakanal stören. – Carcigenicate

+0

Versuchen RGBA anstelle von RGB - http://www.css3maker.com/css-3-rgba.html - http://Stackoverflow.com/questions/16934796/set-a-rgba-color-to-a -layout – Tasos

+0

Wie würde ich RGBA integrieren, um das Schwarz loszuwerden? Zum Beispiel bei RGB (127, 127, 127), um weiß zu sein? –

Antwort

0

Dies kann durch Verwendung

Color.parseColor("#AARRGGBB"); 

Die AA ist die Trübung der Farbe erfolgen. Sie können also den HEX-Wert Ihrer Farbe ermitteln und einen dieser Werte für die Deckkraft am Anfang der Hex einfügen.

100% — FF 
95% — F2 
90% — E6 
85% — D9 
80% — CC 
75% — BF 
70% — B3 
65% — A6 
60% — 99 
55% — 8C 
50% — 80 
45% — 73 
40% — 66 
35% — 59 
30% — 4D 
25% — 40 
20% — 33 
15% — 26 
10% — 1A 
5% — 0D 
0% — 00 

Dankeschön an @Duggu für die Opazitätswerte.

0

Ich würde dies vorschlagen:

1) Holen Sie das Maximum von r, g und b. int max = Math.max(r(Math.max(g,b))

Wenn max == 0 überspringen Sie die Schritte 2 und 3

2) Teilen Sie es von 255: float alpha = max/255f;

3) durch fehlende alpha jeden Wert Maßstab: r = (int) (r * (1/alpha))

4) Erstellen Sie neue Farbe android.graphics.Color.argb(max, r, g, b)

Verwandte Themen