Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

มีวิธี resize รูปภาพด้วย "nearest neighbour" resampling ใน HTML5 ไหม?

ใช่, ทำได้ ใช้คุณสมบัติ CSS ต่อไปนี้:

image-rendering: -webkit-optimize-contrast; /* webkit */
image-rendering: -moz-crisp-edges; /* Firefox */

ตัวอย่าง

คุณต้องสร้าง offscreen canvas แล้ววาดภาพ จากนั้นดึงพิกเซลมาใช้

var a = document.createElement('canvas').getContext('2d');
a.drawImage(myImg, 0, 0);
var image = a.getImageData(0, 0, img1.width, myImg.height).data;
for (var x = 0; x < img1.width; ++x) {
  for (var y = 0; y < img1.height; ++y) {
    var i = (y * myImg.width + x) * 4;
    var r = image[i];
    var g = image[i + 1];
    var b = image[i + 2];
    var a = image[i + 3];
    ctx2.fillStyle = "rgba(" + r + "," + g + "," + b + "," + (a / 255) + ")";
    ctx2.fillRect(x * zoom, y * zoom, zoom, zoom);
  }
}