当前位置: 首页 > article >正文

uniapp 上传 base64 图片

在图片裁剪时候返回的是base64文件 需要上传到obs一般出现在h5网页端

可以直接使用 js 原始解决 应该只可以在h5浏览器内使用

// 提取 Base64 编码部分
const base64Data = e.tempFilePath.replace(/^data:image\/(\w+);base64,/, "");
// 将 Base64 编码转换为 ArrayBuffer
const binary = atob(base64Data);
const array = [];
for (let i = 0; i < binary.length; i++) {
  array.push(binary.charCodeAt(i));
}
const buffer = new Uint8Array(array).buffer;
// 创建一个 Blob 对象
const blob = new Blob([buffer], { type: 'image/png' });
// 创建一个 URL 指向 Blob 对象
let url =URL.createObjectURL(blob);

//这里会把base64变成一个png图片的临时地址,后面就可以上传了
console.log(url);

使用 image-tools 工具,可用于 uni-app、微信小程序、5+APP、浏览器(需允许跨域)。

第一步: 安装

npm i image-tools --save

第二步:引入

npm i image-tools --save
或者下载后按包引入
// 以下路径需根据项目实际情况填写
import { pathToBase64, base64ToPath } from '../../js/image-tools/index.js'

第三步:使用

pathToBase64
从图像路径转换为base64,uni-app、微信小程序和5+APP使用的路径不支持网络路径,
如果是网络路径需要先使用下载API下载下来。

pathToBase64(path)
    .then(base64 => {
        console.log(base64)
    })
    .catch(error => {
        console.error(error)
    })

base64ToPath
将图像base64保存为文件,返回文件路径。

base64ToPath(base64)
    .then(path => {
        console.log(path)
    })
    .catch(error => {
        console.error(error)
    })

多并发使用优化
可以利用promise来串行和并行的执行多个任务

// 并行
Promise.all(paths.map(path => pathToBase64(path)))
  .then(res => {
    console.log(res)
    // [base64, base64...]
  })
  .catch(error => {
    console.error(error)
  })
// 串行
paths.reduce((promise, path) => 
  promise.then(res => pathToBase64(path).then(base64 => (res.push(base64), res))), Promise.resolve([]))
  .then(res => {
    console.log(res)
    // [base64, base64...]
  })
  .catch(error => {
    console.error(error)
  })

小伙伴们记得点赞收藏哦~~~


http://www.kler.cn/a/393235.html

相关文章:

  • 【计算机网络】【网络层】【习题】
  • 前端知识点---Javascript的对象(Javascript)
  • 带你掌握springboot集成SpringSecurity安全框架
  • RS®SZM 倍频器
  • vue2.x elementui 固定顶部、左侧菜单与面包屑,自适应 iframe 页面布局
  • 品融电商:新形势下电商平台如何助力品牌长期经营
  • ubuntu22.04上手指南(更新阿里源、安装ssh、安装chrome、设置固定IP、安装搜狗输入法)
  • 【二叉搜素树】——LeetCode二叉树问题集锦:6个实用题目和解题思路
  • 除了 Postman,还有什么好用的 API 测试工具吗
  • uni-app中使用 unicloud 云开发平台③
  • C++生成随机数
  • 信用租赁系统的灵活配置与智能化管理助力租赁市场发展
  • 29系统备份与恢复
  • 深入理解 Vue v-model 原理与应用
  • 量化交易系统开发-实时行情自动化交易-4.1.1.A股趋势跟踪交易策略实现
  • 批量缓存模版
  • 基于yolov5的番茄成熟度检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】
  • 【前端篇】Node.js 版本管理新选择:Volta,让版本切换更简单
  • OpenGL 进阶系列07 - 阴影贴图(shadowmap )
  • 【深度学习】使用硬件加速模型训练速度
  • Scala可变List
  • MySQL —— MySQL基础概念与常用功能介绍
  • VScode下脚本被禁止运行的原因及解决方案
  • python 怎么在模块和文件夹名称不一致的情况下,安装自己的模块
  • 物联网设备研究——分配推理负载的联合学习方法
  • Android Studio 中三方库依赖无法找到的解决方案