zoukankan      html  css  js  c++  java
  • 用canvas 画出圆形图片

    /**
    * 把图片处理成圆形,如果不是正方形就按最小边一半为半径处理
    * @param {object} imgObj 图片(img)对象
    * @param {number} imgType 设置生成图片的大小:0设置生成的图片大小是以图片设置的css大小为准,1设置生成的图片大小是以图片分辨率为准,默认值为0
    * @return {string} return base64 png图片字符串
    */
    function circle_image_v2(img, imgType) {
    var type = imgType || 0;
    var radius, diameter, canvas, ctx, natural;
    if (type) {
    if (img.naturalWidth > img.naturalHeight) {
    radius = img.naturalHeight / 2;
    } else {
    radius = img.naturalWidth / 2;
    }
    } else {
    if (img.width > img.height) {
    radius = img.height / 2;
    } else {
    radius = img.width / 2;
    }
    if (img.naturalWidth > img.naturalHeight) {
    natural = img.naturalHeight;
    } else {
    natural = img.naturalWidth;
    }
    }
    diameter = radius * 2;
    canvas = document.createElement('canvas');
    if (!canvas.getContext) { // 判断浏览器是否支持canvas,如果不支持在此处做相应的提示
    console.log('您的浏览器版本过低,暂不支持。');
    return false;
    }
    canvas.width = diameter;
    canvas.height = diameter;
    contex = canvas.getContext("2d");
    contex.clearRect(0, 0, diameter, diameter);
    contex.save();
    contex.beginPath();
    contex.arc(radius, radius, radius, 0, Math.PI * 2, false);
    contex.clip();
    if (type) {
    contex.drawImage(img, 0, 0, diameter, diameter, 0, 0, diameter, diameter);
    } else {
    contex.drawImage(img, 0, 0, natural, natural, 0, 0, diameter, diameter);
    }
    contex.restore();
    return canvas.toDataURL('image/png');
    }

    传入要处理的图片对象,返回base64链接

    //window.requestAnimationFrame 的兼容
    
    if(!window.requestAnimationFrame){
        window.requestAnimationFrame = (
          window.webkitRequestAnimationFrame || 
          window.mozRequestAnimationFrame ||
          window.msRquestAniamtionFrame ||
          window.oRequestAnimationFrame || 
          function (callback){
              return setTimeout(callback,Math.floor(1000/60))
        }
      )
    }
    
    作者:犯迷糊的小羊
    链接:https://www.jianshu.com/p/e70c9cfbdb38
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    参考链接:https://blog.csdn.net/fxss5201/article/details/79691923

  • 相关阅读:
    google code jam exercise——Your Rank Is Pure
    C/C++中的文件操作(2)
    google code jam exercise——File Fix It
    google code jam exercise——All Your Base
    C/C++中的文件操作(1)
    google code jam exercise——Center of Mass
    C/C++字符串操作split
    JavascriptDOM
    Javascript特权方法
    Report子报表
  • 原文地址:https://www.cnblogs.com/haqiao/p/9482517.html
Copyright © 2011-2022 走看看