canvas图片操作

简介: canvas图片操作

素材链接:卡通头像 - Bing

一、drawImage()绘制

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>canvas</title>
</head>
<body>
<div><img src="../img/demo.png" alt=""></img></div>
<div>
    <canvas id="myCanvas" width="400" height="400">你的浏览器不支持HTML5</canvas>
</div>
</body>
<script>
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    var image = new Image();
    image.src = "../img/demo.png";
    image.onload = function () {
        //以(10,10)为顶点,绘制图像
        ctx.drawImage(image, 10, 10);
        //以(110,10)为顶点,绘制宽度110,高度为110图像
        ctx.drawImage(image, 110, 10, 110, 110);
        //图片从(10,10)剪切宽度50,高度50,显示到(210,10) 宽度150,高度150
        ctx.drawImage(image, 10, 10, 50, 50, 210, 10, 150, 150);
 
    }
</script>
</html>

 //以(10,10)为顶点,绘制图像
 ctx.drawImage(image, 10, 10);

//以(110,10)为顶点,绘制宽度110,高度为110图像
ctx.drawImage(image, 110, 10, 110, 110);

  //图片从(10,10)剪切宽度50,高度50,显示到(210,10) 宽度150,高度150
 ctx.drawImage(image, 10, 10, 50, 50, 210, 10, 150, 150);

二、getImageData()与putImageData()绘制图片

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>canvas</title>
</head>
<body>
<div><img src="../img/demo.png" alt=""></img></div>
<div>
    <canvas id="myCanvas" width="600" height="600">你的浏览器不支持HTML5</canvas>
</div>
</body>
<script>
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    var image = new Image();
    image.src = "../img/demo.png";
    image.onload = function () {
        //以(10,10)为顶点,绘制图像
        ctx.drawImage(image, 10, 10);
        //开始复制位置(20,20),复制宽度100,复制高度100
        var imgData = ctx.getImageData(20, 20, 100, 100);
        //将复制图像显示至(300,20)位置
        ctx.putImageData(imgData, 300, 20);
        //在(400,20)位置显示,图像(20,20)宽度50,高度50
        ctx.putImageData(imgData, 400, 20, 20, 20, 50, 50)
    }
</script>
</html>


三、createImageData()新建像素

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>canvas</title>
</head>
<body>
<div><img src="../img/demo.png" alt=""></img></div>
<div>
    <canvas id="myCanvas" width="600" height="600">你的浏览器不支持HTML5</canvas>
</div>
</body>
<script>
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    var image = new Image();
    image.src = "../img/demo.png";
    image.onload = function () {
        //以(10,10)为顶点,绘制图像
        ctx.drawImage(image, 10, 10);
        //开始复制位置(20,20),复制宽度100,复制高度100
        var imgData = ctx.getImageData(20, 20, 100, 100);
        //创建空白imageData,宽度和高度使用imgData的宽度和高度(100,100)
        var imageData01 = ctx.createImageData(imgData);
        //填充imageData颜色和透明度grba
        for (var i = 0; i < imageData01.width * imageData01.height * 4; i += 4) {
            imageData01.data[i + 0] = 255;
            imageData01.data[i + 1] = 0;
            imageData01.data[i + 2] = 0;
            imageData01.data[i + 3] = 255;
        }
        //将复制图像显示至(10, 300)位置
        ctx.putImageData(imageData01, 10, 300);
        //创建空白imageData
        var imageData02 = ctx.createImageData(100,100);
        for (var i = 0; i < imageData02.width * imageData02.height * 4; i += 4) {
            imageData02.data[i + 0] = 255;
            imageData02.data[i + 1] = 0;
            imageData02.data[i + 2] = 0;
            imageData02.data[i + 3] = 155;
        }
        //将复制图像显示至(120, 300)位置
        ctx.putImageData(imageData02, 120, 300);
    }
</script>
</html>
 

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>canvas</title>
</head>
<body>
<div><img src="../img/demo.png" alt=""></img></div>
<div>
    <canvas id="myCanvas" width="600" height="600">你的浏览器不支持HTML5</canvas>
</div>
</body>
<script>
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    var image = new Image();
    image.src = "../img/demo.png";
    image.onload = function () {
        //以(10,10)为顶点,绘制图像
        ctx.drawImage(image, 10, 10);
        //开始复制位置(20,20),复制宽度100,复制高度100
        var imgData = ctx.getImageData(20, 20, 100, 100);
        //创建空白imageData,宽度和高度使用imgData的宽度和高度(100,100)
        var imageData01 = ctx.createImageData(imgData);
        //填充imageData颜色和透明度grba
        for (var i = 0; i < imageData01.width * imageData01.height * 4; i += 4) {
            imageData01.data[i + 0] = random(0,255);
            imageData01.data[i + 1] = random(0,125);
            imageData01.data[i + 2] = random(125,255);
            imageData01.data[i + 3] = random(0,255);
        }
        //将复制图像显示至(10, 300)位置
        ctx.putImageData(imageData01, 10, 300);
        //创建空白imageData
        var imageData02 = ctx.createImageData(100,100);
        for (var i = 0; i < imageData02.width * imageData02.height * 4; i += 4) {
            imageData02.data[i + 0] = random(0,255);
            imageData02.data[i + 1] = random(125,255);
            imageData02.data[i + 2] = random(0,125);
            imageData02.data[i + 3] = random(0,255);
        }
        //将复制图像显示至(120, 300)位置
        ctx.putImageData(imageData02, 120, 300);
    }
    function random(min, max) {
        return Math.floor(Math.random() * (max - min)) + min;
    }
</script>
</html>
 

相关文章
|
前端开发
canvas生成自定义大小图片
canvas生成自定义大小图片
|
前端开发 数据安全/隐私保护 容器
|
前端开发 小程序
小程序使用canvas制作beas64图片
小程序使用canvas制作beas64图片
97 0
|
6月前
|
前端开发 小程序
微信小程序canvas画布绘制base64图片并保存图片到相册中
微信小程序canvas画布绘制base64图片并保存图片到相册中
190 0
|
14天前
|
XML 前端开发 JavaScript
如何使用 SVG 和 Canvas 来创建动画?
【10月更文挑战第24天】使用 SVG 和 Canvas 创建动画都有各自的特点和优势,SVG 更适合基于 XML 和 CSS 的简单动画,而 Canvas 则更适合通过 JavaScript 实现复杂的、高性能的动画效果。在实际应用中,可以根据具体的需求和场景选择合适的技术来创建动画。
36 1
|
5月前
|
前端开发
canvas与CreateJS实现图片动画
canvas与CreateJS实现图片动画
|
6月前
|
前端开发 算法 计算机视觉
用canvas消除锯齿的方式
用canvas消除锯齿的方式
249 0
|
6月前
|
存储 前端开发 索引
canvas详解09-像素操作
canvas详解09-像素操作
129 1
|
6月前
|
前端开发
|
6月前
|
前端开发 API
nuiapp保存canvas绘图
nuiapp保存canvas绘图
64 0