zoukankan      html  css  js  c++  java
  • 毕业论文—使用js将canvas保存为图片文件,并且自定义文件名

    该文章引用http://blog.csdn.net/qq547276542/article/details/51906741

    1、从canvas中直接提取图片元数据

    // 图片导出为 png 格式
    var type = 'png';
    var imgData = canvas.toDataURL(type);

    上面的代码得到的数据格式为:data:image/png;base64,.....

    2、将mime-type改为image/octet-stream,强制让浏览器直接download

    /**
     * 获取mimeType
     * @param  {String} type the old mime-type
     * @return the new mime-type
     */
    var _fixType = function(type) {
        type = type.toLowerCase().replace(/jpg/i, 'jpeg');
        var r = type.match(/png|jpeg|bmp|gif/)[0];
        return 'image/' + r;
    };
       
    // 加工image data,替换mime type
    imgData = imgData.replace(_fixType(type),'image/octet-stream');

    上面这个代码得到的数据格式为:data:image/octet-stream;base64,.....

    3、图片download到本地

    /**
     * 在本地进行文件保存
     * @param  {String} data     要保存到本地的图片数据
     * @param  {String} filename 文件名
     */
    var saveFile = 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'truefalse, window, 0, 0, 0, 0, 0, falsefalsefalsefalse, 0, null);
        save_link.dispatchEvent(event);
    };
       
    // 下载后的问题名
    var filename = 'baidufe_' + (new Date()).getTime() + '.' + type;
    // download
    saveFile(imgData,filename);
  • 相关阅读:
    java课后作业-4
    课堂练习
    16年9月27日上午
    《大道至简》第二章读后感
    《大道至简》-编程的精义读后感
    用Windbg来看看CLR的JIT是什么时候发生的
    如何调试什么时候SaveFileDialog会被Dispose
    针对C#程序做性能测试的一些基本准则
    要注意null合并运算符的优先级比+还要低
    实现GetHashCode时要遵循的规则
  • 原文地址:https://www.cnblogs.com/GoTing/p/6206466.html
Copyright © 2011-2022 走看看