• 原生js 保存图片到本地


    <template>
        <div>
            <!--创建一个cavas  用来存放图片-->
            <canvas  id="cavasimg" width="607" height="367"  ></canvas>
    
            <!--        声明一个按钮  用来触发下载图片到本地-->
            <input type="button" id="btnsavaImg" value="保存图片到本地" @click="Download()"/>
        </div>
    
    </template>
    <script> 
        export default {
            data () {
                return {
    
                }
            },
            methods:{
                Download(){
                    //cavas 保存图片到本地  js 实现
                    //------------------------------------------------------------------------
                    //1.确定图片的类型  获取到的图片格式 data:image/Png;base64,......
                    var type ='jpg';//你想要什么图片格式 就选什么吧
                    var d=document.getElementById("cavasimg");
                    var imgdata=d.toDataURL(type);
                    //2.0 将mime-type改为image/octet-stream,强制让浏览器下载
                    var fixtype=function(type){
                        type=type.toLocaleLowerCase().replace(/jpg/i,'jpeg');
                        var r=type.match(/png|jpeg|bmp|gif/)[0];
                        return 'image/'+r;
                    };
                    imgdata=imgdata.replace(fixtype(type),'image/octet-stream');
                    //3.0 将图片保存到本地
                    var savaFile=function(data,filename)
                    {
                        var save_link=document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
                        save_link.href=data;
                        save_link.download=filename;
                        var event=document.createEvent('MouseEvents');
                        event.initMouseEvent('click',true,false,window,0,0,0,0,0,false,false,false,false,0,null);
                        save_link.dispatchEvent(event);
                    };
                    var filename=''+new Date().getSeconds()+'.'+type;
                    //我想用当前秒是可以解决重名的问题了 不行你就换成毫秒
                    savaFile(imgdata,filename);
                }
            },
            mounted () {
                $loading.hide()
    
                //canvas 绘制图片    支持手机端
    //            var canvas = document.getElementById('cavasimg');
    //            var ctx = canvas.getContext('2d');
    //            ctx.fillRect(0, 0, canvas.width, canvas.height);
    //            ctx.fillStyle = "red";
    //            ctx.font = 'italic bold 30px Helvetica ';
    //            ctx.fillText('楷体', 50, 50); 
                // canvas 插入图片   手机端点击没反应
                //获取canvas元素
                var cvs = document.getElementById("cavasimg");
                //创建image对象
                var imgObj = new Image();
                imgObj.src = "http://10.20.11.202:7099/file/readImage?basePath=/sys/201803/8c7d8835de18452695fad2f328c0680efile.jpg";
                imgObj.setAttribute("crossOrigin",'Anonymous')
                //待图片加载完后,将其显示在canvas上
                imgObj.onload = function(){
                    var ctx = cvs.getContext('2d');
                    ctx.drawImage(this, 0, 0);//this即是imgObj,保持图片的原始大小:470*480
                    //ctx.drawImage(this, 0, 0,1024,768);//改变图片的大小到1024*768
                } 
     
            }
        }
  • 相关阅读:
    C#进行Visio二次开发之设备状态跟踪
    C#进行Visio二次开发之Shape的Data1、Data2、Data3的用处
    C#进行Visio二次开发之界面设计及架构设计
    Sqlserver常用函数例子说明
    香港生肖采集及规则分析软件
    使用NVelocity0.5实现服务器端页面自动生成
    C#进行Visio二次开发之判断图纸是否有设备
    C#进行Visio二次开发之图纸缩放操作的实现
    C#进行Visio开发的事件处理
    导线应力及弧垂计算相关资料
  • 原文地址:https://www.cnblogs.com/web-fusheng/p/8608430.html
Copyright © 2020-2023  润新知