h5中使用canvas把图片缩放并且剪切成圆形
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2019-10-31 21:20:44
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
有两个函数一个缩放一个剪切成圆,都返回一个base64格式的png图片,直接放到image的src标签就可以使用
原图

缩放剪切成圆过后

/**
* 生成图片的缩略图
* @param {[type]} img 图片(img)对象或地址
* @param {[type]} width 缩略图宽
* @param {[type]} height 缩略图高
* @return {[type]} return base64 png图片字符串
*/
function thumb_image(img, width, height) {
if (typeof img !== 'object') {
var tem = new Image();
tem.src = img;
img = tem;
}
var _canv = document.createElement('canvas');
_canv.width = width;
_canv.height = height;
_canv.getContext("2d").drawImage(img, 0, 0, img.width, img.height, 0, 0, width, height);
return _canv.toDataURL();
}
/**
* 把图片处理成圆形,如果不是正方形就按最小边一半为半径处理
* @param {[type]} img 图片(img)对象或地址
* @return {[type]} return base64 png图片字符串
*/
function yuan_image(img) {
if (typeof img !== 'object') {
var tem = new Image();
tem.src = img;
img = tem;
}
var w, h, _canv, _contex, cli;
if (img.width > img.height) {
w = img.height;
h = img.height;
} else {
w = img.width;
h = img.width;
}
_canv = document.createElement('canvas');
_canv.width = w;
_canv.height = h;
_contex = _canv.getContext("2d");
cli = {
x: w / 2,
y: h / 2,
r: w / 2
};
_contex.clearRect(0, 0, w, h);
_contex.save();
_contex.beginPath();
_contex.arc(cli.x, cli.y, cli.r, 0, Math.PI * 2, false);
_contex.clip();
_contex.drawImage(img, 0, 0);
_contex.restore();
return _canv.toDataURL();
}