zoukankan      html  css  js  c++  java
  • uniapp支付宝小程序上传图片转base64

    最近使用uniapp涉及到一个上传图片的功能,原本看官方文档api觉得没问题,正常开发,

    1. 首先微信端没问题

        uni.getFileSystemManager().readFile({
          filePath: url, //选择图片返回的相对路径
          encoding: "base64", //编码格式
          success: (res) => {
            //成功的回调
            const base64 = res.data; 
          },
        });

    2. 支付宝小程序出现了问题,真机ios上传图片获取不到base64

    官方文档看了很多没用,也不知道是不是自己看漏了,查了很多资料,最后使用canvas解决了:

    首先使用 chooseImage获取图片tempFiles

    uni.chooseImage

    获取图片宽高,绘制canvas得到base64          //获取图片的宽高

              await my.getImageInfo({
                src: imagePath,
                success: async (res) => {
                  this.imgWidth = res.width / 2.5;
                  this.imgHeight = res.height / 2.5;
                  let canvas = my.createCanvasContext("canvas");
                  canvas.drawImage(imagePath, 0, 0, this.imgWidth, this.imgHeight); // 1. 绘制图片至canvas
                  // 绘制完成后执行回调
                  canvas.draw(false, async () => {
                    let base64 = await canvas.toDataURL({
                       this.imgWidth,
                      height: this.imgHeight,
                      quality: 1,
                    });
                    this.base64 = base64;
    base64
    = base64.replace("data:image/png;base64,", ""); await this.uploadImageRequest(base64); }); }, });

    这样,支付宝小程序ios真机获取base64就成功啦!

  • 相关阅读:
    前台Json格式中时间的格式转换
    存储过程
    自定义注解
    递归(累加)
    java操作符
    Markdown语法参考
    for表达式的循环执行顺序
    java形参与作用域
    java引用类型数组的创建方式
    学习总结之Log4NET
  • 原文地址:https://www.cnblogs.com/mica/p/14142429.html
Copyright © 2011-2022 走看看