核心提示:上段时间在项目中需要将方形图片处理为圆形图片,你可能会说直接用css设置border-radius: 50%就可以了,但是项目中还要将此图片的圆形图片作为一部分利用canvas将其绘制到一张背景图上面...
上段时间在项目中需要将方形图片处理为圆形图片,你可能会说直接用css设置border-radius: 50%就可以了,但是项目中还要将此图片的圆形图片作为一部分利用canvas将其绘制到一张背景图上面,所以就有了为何要用canvas来处理了。
我们知道 <canvas> 是 HTML5 新增的元素,可用于通过使用JavaScript中的脚本来绘制图形。我将本例中的主要处理函数封装为一个方法,可以直接使用。
例子
你可以直接点击此处查看 例子 ,先一睹为快。
参数
参数 | 描述 |
---|---|
img | 图片(img)对象 |
oldImgWidth | 原始图片(img)的实际宽度(非css设置的) |
oldImgHeight | 原始图片(img)的实际高度(非css设置的) |
代码
/** * 把图片处理成圆形,如果不是正方形就按最小边一半为半径处理 * @param {[type]} img 图片(img)对象 * @param {[number]} oldImgWidth 原始图片(img)的实际宽度(非css设置的) * @param {[number]} oldImgHeight 原始图片(img)的实际高度(非css设置的) * @return {[type]} return base64 png图片字符串 */ function circle_image(img, oldImgWidth, oldImgHeight) { var width, height, canvas, contex, circle; if (img.width > img.height) { width = img.height; height = img.height; } else { width = img.width; height = img.width; } canvas = document.createElement('canvas'); if (!canvas.getContext) { // 判断浏览器是否支持canvas,如果不支持在此处做相应的提示 console.log('您的浏览器版本过低,暂不支持。'); return false; } canvas.width = width; canvas.height = height; contex = canvas.getContext("2d"); circle = { x: width / 2, y: height / 2, r: width / 2 }; contex.clearRect(0, 0, width, height); contex.save(); contex.beginPath(); contex.arc(circle.x, circle.y, circle.r, 0, Math.PI * 2, false); contex.clip(); contex.drawImage(img, 0, 0, oldImgWidth, oldImgHeight, 0, 0, width, height); contex.restore(); return canvas.toDataURL('image/png'); }