Glatte Bildgrößenänderung mit JavaScript Canvas
Bei der Größenänderung von Bildern mithilfe von Canvas kommt es häufig zu Problemen mit der Glätte. Im Gegensatz zu Software wie Photoshop oder Browsern, die Algorithmen wie bikubisch oder bilinear verwenden, verfügt Canvas nicht über integrierte Glättungsfunktionen.
Um eine gleichmäßige Größenänderung zu erreichen, können Sie die Abstufung verwenden. Während Browser bei der Größenänderung von Bildern normalerweise auf lineare Interpolation zurückgreifen, wird beim Downstepping die bilineare Interpolation verwendet, um feinere Ergebnisse zu erzielen. Indem Sie den Prozess in mehrere Schritte aufteilen, können Sie bikubische Ergebnisse annähern.
Bedenken Sie den folgenden Codeausschnitt:
<code class="js">var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var img = new Image(); img.onload = function () { // set size proportional to image canvas.height = canvas.width * (img.height / img.width); // step 1 - resize to 50% var oc = document.createElement('canvas'), octx = oc.getContext('2d'); oc.width = img.width * 0.5; oc.height = img.height * 0.5; octx.drawImage(img, 0, 0, oc.width, oc.height); // step 2 octx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5); // step 3, resize to final size ctx.drawImage(oc, 0, 0, oc.width * 0.5, oc.height * 0.5, 0, 0, canvas.width, canvas.height); } img.src = "image.jpg";</code>
Der erste Schritt reduziert das Bild auf 50 % seines Originals Größe. Im zweiten Schritt wird das Zwischenbild erneut verkleinert, was zu einer endgültigen Verkleinerung von 25 % führt. Im dritten Schritt wird das Bild schließlich auf die gewünschte Größe angepasst.
Durch mehrmaliges Wiederholen des Herunterskalierungsvorgangs nähern Sie sich effektiv der glatteren bikubischen Interpolationstechnik an. Dieser Ansatz verleiht Canvas die Möglichkeit, die Größe von Bildern mit verbesserter Glätte zu ändern, was der Qualität von Softwareprogrammen und Browsern nahekommt.
Das obige ist der detaillierte Inhalt vonWie erreicht man mit JavaScript Canvas eine reibungslose Bildgrößenänderung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!