Heim >Web-Frontend >js-Tutorial >Die magische Verwendung von Leinwand

Die magische Verwendung von Leinwand

高洛峰
高洛峰Original
2017-02-08 14:42:45987Durchsuche

Canvas verfügt über eine magische Methode namens getImageData. Es kann den Farbwert jedes Pixels des Bildes auf der Leinwand ermitteln und ändern.

Wenn Sie verschiedene Filteralgorithmen haben. Dann können Sie Canvas verwenden, um die Filterkonvertierung von Bildern zu realisieren, und Sie können eine Funktion erstellen, die Meitu Xiuxiu ähnelt.

Anleitung:

1: Importieren Sie zunächst das Bild in die Leinwand.

2: var canvasData = context.getImageData(0, 0, canvas.width, canvas.height); //Verwenden Sie dies, um die Informationen jedes Pixels des Bildes abzurufen und ein Array zu erhalten. Beachten Sie, dass die erhaltenen Informationen kein zweidimensionales Array wie [[r,g,b,a],[r,g,b,a]] sind, sondern [r,g,b,a,r,g,b, a] Solch ein einzelnes Array, angeordnet in RGBA-Reihenfolge.

3: In diesem Schritt wird mit der Änderung des RGBA jedes Pixels begonnen. Hier finden Sie eine kurze Einführung in den Algorithmus und die Implementierungsschritte des Graustufeneffekts.

function gray(canvasData)
{
for ( var x = 0; x < canvasData.width; x++) {
  for ( var y = 0; y < canvasData.height; y++) {
  // Index of the pixel in the array
  var idx = (x + y * canvasData.width) * 4;
  var r = canvasData.data[idx + 0];
  var g = canvasData.data[idx + 1];
  var b = canvasData.data[idx + 2];
  var gray = .299 * r + .587 * g + .114 * b;
  // assign gray scale value
  canvasData.data[idx + 0] = gray; // Red channel
  canvasData.data[idx + 1] = gray; // Green channel
  canvasData.data[idx + 2] = gray; // Blue channel
  canvasData.data[idx + 3] = 255; // Alpha channel
  // add black border
  if(x < 8 || y < 8 || x > (canvasData.width - 8) || y > (canvasData.height - 8)) 
  {
   canvasData.data[idx + 0] = 0;
   canvasData.data[idx + 1] = 0;
   canvasData.data[idx + 2] = 0;
  }
  }
}
return canvasData;
}

4: context.putImageData(canvasData, 0, 0); // Denken Sie nach der Verarbeitung des Pixelfarbwerts daran, die Leinwand mit diesem Satz neu zu zeichnen

Diese Codes sind Der Code das Bilder in Schwarz-Weiß-Effekte umwandelt. Der konkrete Effekt, der erzielt werden kann, hängt davon ab, wie viele Filteralgorithmen Sie haben.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels jedem beim Lernen oder Arbeiten helfen kann. Ich hoffe auch, die PHP-Chinese-Website zu unterstützen.

Weitere Artikel zur magischen Verwendung von Canvas finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn