canvas—像素操作
canvas 像素操作
参考:https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial/Pixel_manipulation_with_canvas
API介绍:
- ImageData 对象:
 ImageData对象中存储着canvas对象真实的 像素数据,它包含以下几个只读属性:
 - width:图片宽度,单位是像素。
- height:图片高度,单位是像素。
- data:Uint8ClampedArray类型的一维数组,包含着RGBA格式的整型数据,范围在0至255之间(包括255)
 
- 创建 ImageData 对象:
var myImageData = ctx.createImageData(width, height); // 创建了一个新的具体特定尺寸的ImageData对象。所有像素被预设为透明黑, rbga为(0,0,0,0) 。 
- 获取画布上 某个区域的 ImageData 对象:
 为了获得一个包含画布场景像素数据的ImageData对像,你可以用getImageData()方法var myImageData = ctx.getImageData(left, top, width, height);
- 在画布上写入 像素数据
 你可以用putImageData()方法去对场景进行像素数据的写入。ctx.putImageData(myImageData, dx, dy); // dx,dy 就是写入画布的坐标位置 
- 保存图片:
- toDataURL:默认设定。创建一个 PNG 图片。
 也可以自定义 图片格式 和 图片质量,如var fullQuality = canvas.toDataURL("image/jpeg", 1.0); // data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ...9oADAMBAAIRAxEAPwD/AD/6AP/Z" var mediumQuality = canvas.toDataURL("image/jpeg", 0.5); var lowQuality = canvas.toDataURL("image/jpeg", 0.1); 
- toBlob:这个创建了一个在画布中的代表图片的 Blob 对象。
const canvas = document.getElementById("canvas"); canvas.toBlob((blob) => { const newImg = document.createElement("img"); const url = URL.createObjectURL(blob); newImg.onload = () => { // 不再需要读取该 blob,因此释放该对象 URL.revokeObjectURL(url); }; newImg.src = url; document.body.appendChild(newImg); });
 
- toDataURL:默认设定。创建一个 PNG 图片。
实例代码:
   const canvas = document.getElementById('canvas')
    const ctx = canvas.getContext('2d')
    ctx.beginPath()
    ctx.fillStyle = "red"
    ctx.fillRect(0,0,100,100)
    ctx.closePath()
    // 拷贝 画布中指定区域的像素数据。 
    const copy = ctx.getImageData(0,0,30,30)
    console.log(copy);
    
    // 将像素数据,写入到画布指定区域
    ctx.putImageData(copy, 200,200)
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号