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
                } 
     
            }
        }
  • 相关阅读:
    Stream processing with Apache Flink and Minio
    Replicated Ship 本地 kubernetes 环境试用
    replicatedhq-ship 基于Kustomize 项目的快速kubernetes 应用部署工具
    kustomize 模版自由的配置&&自定义kubernetes工具
    hasura graphql-engine v1.0.0-alpha30 remote schema stitch 试用
    Modern Data Lake with Minio : Part 2
    Modern Data Lake with Minio : Part 1
    使用rclone 进行minio 文件同步
    hasura graphql-engine v1.0.0-alpha30 功能试用
    hasura graphql-engine v1.0.0-alpha30 版本新功能介绍
  • 原文地址:https://www.cnblogs.com/web-fusheng/p/8608430.html
Copyright © 2011-2022 走看看