[转]JavaScript和html5 canvas生成圆形印章

本文转自:http://www.cnblogs.com/dragondean/p/6013529.html

代码:

复制代码

function createSealid,company,name){
    
    var canvas = document.getElementByIdid);  
    var context = canvas.getContext'2d');
    
    // 绘制印章边框   
    var width=canvas.width/2;
    var height=canvas.height/2;
    context.lineWidth=7;
    context.strokeStyle="#f00";
    context.beginPath);
    context.arcwidth,height,110,0,Math.PI*2);
    context.stroke);

    //画五角星
    create5starcontext,width,height,30,"#f00",0);

    // 绘制印章名称   
    context.font = '22px Helvetica';
    context.textBaseline = 'middle';//设置文本的垂直对齐方式
    context.textAlign = 'center'; //设置文本的水平对对齐方式
    context.lineWidth=1;
    context.fillStyle = '#f00';
    context.fillTextname,width,height+65);

    // 绘制印章单位   
    context.translatewidth,height);// 平移到此位置,
    context.font = '30px Helvetica'
    var count = company.length;// 字数   
    var angle = 4*Math.PI/3*count - 1));// 字间角度   
    var chars = company.split"");   
    var c;
    for var i = 0; i < count; i++){
        c = chars[i];// 需要绘制的字符   
        ifi==0)
            context.rotate5*Math.PI/6);
        else
          context.rotateangle);
        context.save); 
        context.translate90, 0);// 平移到此位置,此时字和x轴垂直   
        context.rotateMath.PI/2);// 旋转90度,让字平行于x轴   
        context.fillTextc,0, 5);// 此点为字的中心点   
        context.restore);             
    }

    //绘制五角星  
    /** 
     * 创建一个五角星形状. 该五角星的中心坐标为sx,sy),中心到顶点的距离为radius,rotate=0时一个顶点在对称轴上 
     * rotate:绕对称轴旋转rotate弧度 
     */  
    function create5starcontext,sx,sy,radius,color,rotato){
        context.save);  
        context.fillStyle=color;  
        context.translatesx,sy);//移动坐标原点  
        context.rotateMath.PI+rotato);//旋转  
        context.beginPath);//创建路径  
        var x = Math.sin0);  
        var y= Math.cos0);  
        var dig = Math.PI/5 *4;  
        forvar i = 0;i< 5;i++){//画五角星的五条边  
         var x = Math.sini*dig);  
         var y = Math.cosi*dig);  
         context.lineTox*radius,y*radius);  
        }   
        context.closePath);  
        context.stroke);  
        context.fill);  
        context.restore);  
    }
}

复制代码

挂载元素:

<canvas id="canvas" width="250" height="250"></canvas>

调用:

createSeal'canvas','江西省晨尚科技有限公司','测试专用章');

效果:

获取图片Base64:

document.getElementById'canvas').toDataURL"image/png");

 如果需要用php保存到服务器上的话,可以参考下面的代码:

$str = $_POST['base64'];
preg_match'/^data:s*image/w+);base64,)/', $str, $result);
$str = str_replace$result[1], '', $str);
file_put_contents'a.png',base64_decode$str));

核心的代码网上找的,自己整理加工了一下而已。

小程序开发交流群563752274

本文来自DragonDean的博客,转载请注明原文链接:http://www.cnblogs.com/dragondean/

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注