• 用html5的canvas生成图片并保存到本地


    原文:http://www.2cto.com/kf/201209/156169.html

    前端的代码:

    [javascript] 
    function drawArrow(angle) 

        //Init canvas 
        var canvas = $('#cv_Arrow')[0]; 
        var context = canvas.getContext('2d'); 
        var width = canvas.width; 
        var height = canvas.height; 
        context.clearRect(0, 0, width, height); 
     
        //Rotate 
        var distance = iconSize / 2 * Math.sqrt(2) * Math.sin(angle * Math.PI / 180 / 2) * 2; 
        var degree = 180 - 45 - (180 - angle) / 2; 
        var x = distance * Math.sin(degree * Math.PI / 180); 
        var y = distance * Math.cos(degree * Math.PI / 180); 
        context.translate(x, -y); 
        var angleInRadians = angle * Math.PI / 180; 
        context.rotate(angleInRadians); 
     
        //Draw arrow 
        context.fillStyle = 'rgb(0,0,0)'; //Black 
        context.lineWidth = 1; 
        context.strokeStyle = "#000000"; //Black 
        context.lineCap = 'round'; //Circle angle 
        context.lineJoin = 'round'; 
        context.beginPath(); 
        context.moveTo(iconSize / 2, border); 
        context.lineTo(border, iconSize - border); 
        context.lineTo(iconSize / 2, iconSize / 2); 
        context.fill(); 
        context.stroke(); 
        context.closePath(); 
        context.save(); 
     
        context.restore(); 
        context.fillStyle = 'rgb(255,255,255)'; //White 
        context.lineWidth = 1; 
        context.strokeStyle = "#000000"; 
        context.lineCap = 'round'; 
        context.lineJoin = 'round'; 
        context.beginPath(); 
        context.moveTo(iconSize / 2, border); 
        context.lineTo(iconSize - border, iconSize - border); 
        context.lineTo(iconSize / 2, iconSize / 2); 
        context.fill(); 
        context.stroke(); 
        context.closePath(); 
        context.save(); 
     
        _canvas = canvas; 

    发送到后台的代码:

    [javascript]
    for (var i = 0; i < 360; i++) 

        drawArrow(1); 
     
        var data = _canvas.toDataURL(); 
     
        //删除字符串前的提示信息 "data:image/png;base64," 
        var b64 = data.substring(22); 
     
        $.ajax({ url: "RotateCanvas.aspx", data: { data: b64, name: i.toString() }, success: 
                function () 
                { 
                //alert('OK'); 
                } 
        }); 

    后台接收的代码:

    [csharp]
    if (Request["name"] != null) 

        string name = Request["name"]; 
        String savePath = Server.MapPath("~/images/output/"); 
     
        try 
        { 
            FileStream fs = File.Create(savePath + "/" + name + ".png"); 
            byte[] bytes = Convert.FromBase64String(Request["data"]); 
     
            fs.Write(bytes, 0, bytes.Length); 
            fs.Close(); 
        } 
        catch (Exception ex) 
        { 
        } 

    最后生成的结果:

     

    生成图片的效果很棒,不失真,而且透明的,不需要后期处理。

  • 相关阅读:
    从实验室走向世界:HSP90抑制剂,一种新的癌症药物
    RabbitMQ整合Spring Booot【消费者应答模式】
    RabbitMQ整合Spring Booot【点对点模式】
    Mac删除自带的abc输入法
    Docker搭建Kafka
    IK分词器
    Docker搭建ES集群
    Logstash配置同步mysql到es配置
    ELK分布式日志收集搭建和使用
    Docker安装ES和Kibana
  • 原文地址:https://www.cnblogs.com/gaoxue/p/3336693.html
Copyright © 2020-2023  润新知