Wie bewahre ich die Farben eines Bildes, wenn ich seine allgemeine Deckkraft auf fast transparent senke? (HTML JavaScripHTML

HTML-Programmierer
Anonymous
 Wie bewahre ich die Farben eines Bildes, wenn ich seine allgemeine Deckkraft auf fast transparent senke? (HTML JavaScrip

Post by Anonymous »

Wenn ich ein Bild in nahezu transparente (1% Deckkraft) umwandle, entweder durch Verwendung von Imagedata oder globalalpha , gehen die ursprünglichen Farbdaten bei der Konvertierung verloren. Wenn ich das gespeicherte Bild in einer Bildbearbeitungssoftware öffne (ich habe überprüft und die Bildbearbeitungssoftware hier nicht das Problem ist) und ich stelle es dort wieder auf die volle Deckkraft, ich bemerke, dass nur 16 oder 24 Farben übrig bleiben. Das Bild sieht so aus, als ob es posterisiert wäre.const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
const data = imageData.data;

ctx2.clearRect(0, 0, canvas2.width, canvas2.height);

for (let i = 0; i < data.length; i += 4) {
const red = data;
const green = data[i + 1];
const blue = data[i + 2];
const alpha = data[i + 3];
if (alpha == 0 || (red == 0 && green == 0 && blue == 0)) {
// black pixels become fully transparent
data = 0; // Red
data[i + 1] = 0; // Green
data[i + 2] = 0; // Blue
data[i + 3] = 0; // Alpha
} else {
// all other pixels turn almost transparent
data[i + 3] = 255 * 0.01;
}
}
ctx2.putImageData(imageData, 0, 0);
< /code>
Ich habe versucht, Globalalpha zu verwenden und festzustellen, dass die Qualität reduziert wurde. Ich habe dann versucht, Imagedata zu verwenden, weil ich dachte, dass sie die Bilddaten bewahren würde, da ich die Daten des Bildes selbst modifizierte (oder das Array oder die Farbwerte, die das Bild enthält), aber es hat auch nicht funktioniert. Ich habe auch mit einer Deckkraft getestet, die nur etwas mehr als 1% (wie 3%) ist und festgestellt habe, dass die Farbqualität weniger verringert wurde. Ich gehe davon aus>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post