• base64转换成文件图片


    最近搞小程序分享画布遇到的坑

    canvas drawImage 传入的第一个参数是 imageResource 图片资源路径,这个参数通常由从相册选择图片 wx.chooseImage 或 wx.getImageInfo 获取图片信息来获得。而 base64 格式图片数据,无法被 getImageInfo 直接调用

    1.首先使用 wx.base64ToArrayBuffer 将 base64 数据转换为 ArrayBuffer 数据
    2.使用 FileSystemManager.writeFile 将 ArrayBuffer 写为本地用户路径的二进制图片文件
    3.此时的图片文件路径在 wx.env.USER_DATA_PATH 中, wx.getImageInfo 接口能正确获取到这个图片资源并 drawImage 至 canvas 上

    上代码

    const fsm = wx.getFileSystemManager();
    const FILE_BASE_NAME = 'tmp_base64src';
    
    const base64src = function(base64data) {
      return new Promise((resolve, reject) => {
        const [, format, bodyData] = /data:image/(w+);base64,(.*)/.exec(base64data) || [];
        if (!format) {
          reject(new Error('ERROR_BASE64SRC_PARSE'));
        }
        const filePath = `${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME}.${format}`;
        const buffer = wx.base64ToArrayBuffer(bodyData);
        fsm.writeFile({
          filePath,
          data: buffer,
          encoding: 'binary',
          success() {
            resolve(filePath);
          },
          fail() {
            reject(new Error('ERROR_BASE64SRC_WRITE'));
          },
        });
      });
    };
  • 相关阅读:
    java字符串实现正序和倒序输出
    暑假前挑战赛1—— A,B题解
    深搜
    poj 1200 Crazy Search
    poj 1840 Eqs (hash)
    Choose the best route
    一个人的旅行
    畅通工程续
    最短路基础算法
    完全背包问题
  • 原文地址:https://www.cnblogs.com/ll15888/p/11729336.html
Copyright © 2020-2023  润新知