当前位置:网站首页>canvas 绘制图片
canvas 绘制图片
2022-06-24 09:32:00 【Time202051】
首先getImageData获取图片所有像素数据(数组)
putImageData 就是将获取的数据绘制的地方
注意:普通canvas元素可以直接这样绘制,但是如果是导入的图片就要通过createImageData创建一个透明的区域,再将获取到的图片像素数据赋值给createImageData的每个像素
// var canvas = document.getElementById('canvas');
// var ctx = canvas.getContext('2d');
var canvasa = document.getElementById('canvasa');
var ctxa = canvasa.getContext('2d');
var canvasb = document.getElementById('canvasb');
var ctxb = canvasb.getContext('2d');
// ctx.fillStyle = "green"
// ctx.fillRect(0, 0, 50, 50)
var imageData;
var image = new Image()
image.src = './image.jfif'
image.onload = function () {
ctxb.drawImage(this, 0, 0, this.width, this.height)
imageData = ctxb.getImageData(0, 0, canvasb.width, canvasb.height)
console.log(imageData);
var cImage = ctxa.createImageData(canvasa.width, canvasa.height)
for (var i = 0; i < imageData.data.length; i += 4) {
//rbg和透明度一组 +4
cImage.data[i + 0] = imageData.data[i + 0]
cImage.data[i + 1] = imageData.data[i + 1]+ 16
cImage.data[i + 2] = imageData.data[i + 2]
cImage.data[i + 3] = imageData.data[i + 3]
}
console.log(cImage);
ctxa.putImageData(cImage, 0, 0, 0, 0, canvasa.width, canvasa.height)
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<canvas id="canvasa" width="500" height="300" style=" border: 1px solid #c03;"></canvas>
<canvas id="canvasb" width="500" height="300" style=" border: 1px solid #06C1AE;"></canvas>
<!-- <canvas id="canvas" width="500" height="300" style=" border: 1px solid #1122c0;"></canvas> -->
<!-- <script src="./image.js"> -->
<!-- </script> -->
<script src="./image1.js"></script>
</body>
</html>
这个就是getImageData获取的像素数据。每4个为一组,为rgb和透明度
左边canvas绘制的,右边原图片
给每个rgb的g加了几像素,所以canvas绘制的偏绿色。猜测滤镜可能就是通过一些算法修改每个像素值
注意这个要起服务,右键Open with Live Server启动

边栏推荐
- Latex formula and table recognition
- 5分钟,客服聊天处理技巧,炉火纯青
- Codeforces Round #392 (Div. 2) D. Ability To Convert
- 新手怎么选择投资理财产品的等级?
- Directly applicable go coding specification
- Cdga | how can we do well in data governance?
- 达梦数据库如何定位锁等待问题解决方法
- 从618看京东即时零售的野心
- Endgame P.O.O
- Grpc local test joint debugging tool bloomrpc
猜你喜欢

latex公式及表格识别

Five heart matchmaker

How to make social media the driving force of cross-border e-commerce? This independent station tool cannot be missed!

Summary of medical image open source datasets (II)

如何提高网络基础设施排障效率,告别数据断档?

PTA monkey chooses King (Joseph Ring problem)

R 椭圆随机点产生并画图

Event registration Apache pulsar x kubesphere online meetup hot registration

Literature Research Report

从618看京东即时零售的野心
随机推荐
About thinkphp5, use the model save() to update the data prompt method not exist:think\db\query- & gt; Error reporting solution
LeetCode: 240. 搜索二维矩阵 II
Target of cmake command_ compile_ options
In depth analysis of Apache bookkeeper series: Part 3 - reading principle
Ora-16038 ora-19502 ora-00312 troubleshooting
从618看京东即时零售的野心
LeetCode: 377. Combined sum IV
Servlet快速筑基
LeetCode: 137. 只出现一次的数字 II
NLP-D59-nlp比赛D28—我想,也好—阶段总结—心态调整
Inspiration from reading CVPR 2022 target detection paper
获取带参数的微信小程序二维码-以及修改二维码LOGO源码分享
PostgreSQL
Thinkphp5清除runtime下的cache缓存,temp缓存,log缓存
Learning Tai Chi Maker - esp8226 (XIII) OTA
Oracle查看数据文件头SCN信息
每周推荐短视频:计算的终极形态是“元宇宙”?
十大证券公司哪个佣金最低,最安全可靠?有知道的吗
php文件锁
ggplot2颜色设置总结