用 canvas
做了一个电子签名,可是用户签名后留白太多。有什么办法可以截取空白区域吗?
示例原图:
我是在签字过程中,获取鼠标经过的区域,从而得到如下图红色区域坐标。
然后传给 img
对象,再绘制到 canvas
上裁剪红色区域。
有什么其他方式可以做到吗?
谢谢!
用 canvas
做了一个电子签名,可是用户签名后留白太多。有什么办法可以截取空白区域吗?
示例原图:
我是在签字过程中,获取鼠标经过的区域,从而得到如下图红色区域坐标。
然后传给 img
对象,再绘制到 canvas
上裁剪红色区域。
有什么其他方式可以做到吗?
谢谢!
//将签名后的canvas存为图片
var oldUrl = canvas1.toDataURL();
var originImage = new Image();
originImage.src = oldUrl;
//用9参数的drawImage方法对图片进行裁减
ctx2.drawImage(originImage,startX,startY,cropWidth,cropHeight,0,0,cropWidth,cropHeight);
var newUrl = canvas2.toDataURL();
var newImage = new Image();
newImage.src = newUrl;
简单的对carvas进行放大不知道能不能满足你的需求,
看楼主的意思是已经得到红框内的图片,那么就可以知道图片的宽高,在根据carvas的宽高计算图像和carvas的缩放比
通过ctx.scale(widthScale, heightScale)方法设置放大比例。
然后ctx绘制图像。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
首先是可以做到的,
canvas.getContext('2d').getImageData(0, 0, 宽, 高)
会返回一个当前canvas的图像数据对象,其中有一个data属性,是一个一维数组,这个一维数组,每4个下标分别代表了一个像素点的R,G,B,A的值,楼主只需要遍历这些值就能找到边界了.下面是伪代码实现