zoukankan      html  css  js  c++  java
  • 原生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
                } 
     
            }
        }
  • 相关阅读:
    HTB-靶机-Charon
    第一篇Active Directory疑难解答概述(1)
    Outlook Web App 客户端超时设置
    【Troubleshooting Case】Exchange Server 组件状态应用排错?
    【Troubleshooting Case】Unable to delete Exchange database?
    Exchange Server 2007的即将生命周期,您的计划是?
    "the hypervisor is not running" 故障
    Exchange 2016 体系结构
    USB PE
    10 months then free? 10个月,然后自由
  • 原文地址:https://www.cnblogs.com/web-fusheng/p/8608430.html
Copyright © 2011-2022 走看看