Wie konvertiert man Farben im RGB-Format in das Hex-Format und umgekehrt?
Konvertieren Sie zum Beispiel '#0080C0'
a (0, 128, 192)
.
Wie konvertiert man Farben im RGB-Format in das Hex-Format und umgekehrt?
Konvertieren Sie zum Beispiel '#0080C0'
a (0, 128, 192)
.
Ich brauchte eine Funktion, die auch ungültige Werte akzeptiert, wie
rgb(-255, 255, 255) rgb(510, 255, 255)
dies ist eine Abwandlung der Antwort von @cwolves
function rgb(r, g, b) {
this.c = this.c || function (n) {
return Math.max(Math.min(n, 255), 0)
};
return ((1 << 24) + (this.c(r) << 16) + (this.c(g) << 8) + this.c(b)).toString(16).slice(1).toUpperCase();
}
Ich stieß auf dieses Problem, da ich einen beliebigen Farbstringwert analysieren und eine Deckkraft angeben wollte, also schrieb ich diese Funktion, die die Canvas-API .
var toRGBA = function () {
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
canvas.width = 1;
canvas.height = 1;
return function (color) {
context.fillStyle = color;
context.fillRect(0, 0, 1, 1);
var data = context.getImageData(0, 0, 1, 1).data;
return {
r: data[0],
g: data[1],
b: data[2],
a: data[3]
};
};
}();
Hinweis zu context.fillStyle
:
Wenn das Parsen des Wertes zu einem Fehler führt, muss er ignoriert werden und das Attribut muss seinen vorherigen Wert behalten.
Hier ist eine Stack Snippet-Demo, die Sie zum Testen von Eingaben verwenden können:
var toRGBA = function () {
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
canvas.width = 1;
canvas.height = 1;
return function (color) {
context.fillStyle = color;
context.fillRect(0, 0, 1, 1);
var data = context.getImageData(0, 0, 1, 1).data;
return {
r: data[0],
g: data[1],
b: data[2],
a: data[3]
};
};
}();
var inputs = document.getElementsByTagName('input');
function setColor() {
inputs[1].value = JSON.stringify(toRGBA(inputs[0].value));
document.body.style.backgroundColor = inputs[0].value;
}
inputs[0].addEventListener('input', setColor);
setColor();
input {
width: 200px;
margin: 0.5rem;
}
<input value="cyan" />
<input readonly="readonly" />
Eine einfache Antwort, um RGB in Hex zu konvertieren. Hier sind die Werte der Farbkanäle zwischen 0 und 255 eingeklemmt.
function RGBToHex(r = 0, g = 0, b = 0) {
// clamp and convert to hex
let hr = Math.max(0, Math.min(255, Math.round(r))).toString(16);
let hg = Math.max(0, Math.min(255, Math.round(g))).toString(16);
let hb = Math.max(0, Math.min(255, Math.round(b))).toString(16);
return "#" +
(hr.length<2?"0":"") + hr +
(hg.length<2?"0":"") + hg +
(hb.length<2?"0":"") + hb;
}
R = HexToR("#FFFFFF");
G = HexToG("#FFFFFF");
B = HexToB("#FFFFFF");
function HexToR(h) {return parseInt((cutHex(h)).substring(0,2),16)}
function HexToG(h) {return parseInt((cutHex(h)).substring(2,4),16)}
function HexToB(h) {return parseInt((cutHex(h)).substring(4,6),16)}
function cutHex(h) {return (h.charAt(0)=="#") ? h.substring(1,7):h}
Verwenden Sie diese Funktion, um das Ergebnis ohne Probleme zu erreichen :)
Anstatt hier und da gefundene Schnipsel zu kopieren und einzufügen, würde ich empfehlen, eine gut getestete und gepflegte Bibliothek zu verwenden: Farben.js (verfügbar für node.js und Browser). Sie ist nur 7 KB groß (minified, gzipped noch weniger).
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.