当前第2页 返回上一页
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | var output =document.createElement( "canvas" ).getContext( '2d' ).createImageData(input);
var w = input.width,
h = input.height;
var iD = input.data,
oD = output.data;
for ( var y = 1; y < h - 1; y += 1) {
for ( var x = 1; x < w - 1; x += 1) {
for ( var c = 0; c < 3; c += 1) {
var i = (y * w + x) * 4 + c;
oD[i] = offset +(m[0] * iD[i - w * 4 - 4] + m[1] * iD[i - w * 4] + m[2] * iD[i - w * 4 + 4] +m[3] * iD[i - 4] + m[4] * iD[i] + m[5] * iD[i + 4] +m[6] * iD[i + w * 4 - 4] + m[7] * iD[i + w * 4] + m[8] * iD[i + w * 4 + 4]) /pisor;
}
oD[(y * w + x) * 4 + 3] = 255;
}
}
return output;
|
}
//模糊处理
function mohu(){
1 2 3 4 | var imageData = ctx1.getImageData(0, 0, canvas1.width, canvas1.height);
var m = [1,1,1,1,1,1,1,1,1];
var output = ConvolutionMatrix(imageData, m, 10,0);
ctx1.putImageData(output,0,0);
|
}
//对比度处理
function level(){
1 2 3 4 | var imageData = ctx1.getImageData(0, 0, canvas1.width, canvas1.height);
var m = [0,0,0,0,3,0,0,0,0];
var output = ConvolutionMatrix(imageData, m, 1,-150);
ctx1.putImageData(output,0,0);
|
}
图片也可以有你想要的数据
既然图片每个像素都是由RGBA四个元素构成,单纯以图片来说用getImageData解析出来的只是一大堆你不必需要知道的数据,那么我们是不是可以把特定的色值看成我们自己的数据呢?
比如:在一张图片中,我们想把(r:255,g:255:b:255,a:255)白色像素找出来,可以通过getImageData来获取图片的数据,通过检索每个像素的数据是不是对应的rgba,把它们提取出来,再根据图片的宽度和高度,就可以计算出每个白色像素的位置信息,这些信息就是你想要提取的数据。

图片也需要做的好遍历些
在上一步中,我们已经知道了图片中特定元素获取相关位置信息的操作,但是图片是一个很普通的图片的话,你就需要遍历imageData中每个信息,有没有更好的方式减少遍历呢?
答案是:图片默认为黑色(r:0,g:0,b:0,a:0)就可以了,但不一定只有一个答案,或许也会有其他好的方法,但原理应该是一样的。
通过遍历每个像素的r,如果r!=0再去遍历这个像素的剩下的g,b,a,这一步比上一步剩下了无用的遍历,这一步中最重要的就是背景最好是黑色,因为黑色是全零状态,好计算。

还有没有更好的优化?
除了上述两步外,所用到的图片太大,也会导致遍历更多,而且我们只关心的是提取数据,而不关心他的大小,最终数据是我们想要的就行,那么我们可以把原图可以按比例缩放几倍,利用新的图片获取的数据最后在乘以相应的倍数,所得的就是我们想要的数据了。

相关推荐:
Canvas处理图片的方法
怎样用canvas实现小球和鼠标的互动
JavaScript+html5 canvas实现图片上画超链接的示例代码
以上就是canvas的图片处理 的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
在canvas上实现元素图片镜像翻转动画效果的方法
css怎么在图片上加阴影
html5 canvas实现瀑布流文字效果代码
canvas实现旋转风车的绘制
html5中canvas元素如何绘制图形
canvas中beginpath()和closepath()作用的实例解析
关于canvas下载二维码和图片加水印的方法
bootstrap的缓存怎么处理
canvas的手绘风格图形库rough.js
html5 canvas基本绘图之绘制阴影效果
更多相关阅读请进入《canvas》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » canvas的图片处理