js如何将图片转成BASE64编码,网页跟uniapp开发的app的区别?

news/2024/11/19 18:42:40/

Base64是一种用64个字符来表示任意二进制数据的方法,这篇文章主要为大家介绍了如何实现将图片转为base64格式,感兴趣的小伙伴可以学习一下

前言

前段时间在写我的VUE全栈项目的时候,遇到要把前端的照片上传到后端,再由后端存到数据库的问题,通过网上查找资料,看了一些其他写者的解决方法,最终采用转BASE64的方法。本人觉得把上传的图片转为BASE64格式相比其他是比较简单的。

什么是BASE64

Base64是一种用64个字符来表示任意二进制数据的方法。它是一种编码方式,而非加密方式,即可以将一张图片数据编码成一串字符串,使用该字符串代替图像地址。

BASE64的优缺点

  • 减少一张图片的http请求
  • 导致转换后的css文件体积增大,而CSS 文件的体积直接影响渲染,导致用户会长时间注视空白屏幕,而且转换后的数据是一大串字符串。

注意::图片转BASE64格式的适合小图片或者极简单图片,大图片不划算。它的格式为:data:image/type;base64,xxxx…

虽然说这种方式不适用于体积大的图片,但不得不说有时候还挺方便的。由于在我的vue项目中上传的图片都比较小,单一,为了方便我采用了这种方式来实现将前端上传的图片存到数据库中。

在h5或者网页中

 // 图片路径var img = "imgurl";function getBase64Image(img) {var canvas = document.createElement("canvas");canvas.width = img.width;canvas.height = img.height;var ctx = canvas.getContext("2d");ctx.drawImage(img, 0, 0, img.width, img.height);var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();var dataURL = canvas.toDataURL("image/"+ext);return dataURL;}var image = new Image();image.src = img;console.log(getBase64Image(image));

在uniapp中,如果是app情况下,不支持原生的canvas跟image

 // 图片路径var img = "imgurl";
const path = plus.io.convertLocalFileSystemURL(img); //绝对路径const fileReader = new plus.io.FileReader();fileReader.readAsDataURL(path);fileReader.onloadend = (res) => {//读取文件成功完成的回调函数let base64 = res.target.result;console.log('res', res);};

http://www.ppmy.cn/news/999996.html

相关文章

springboot自定义错误消息

为了提供自定义错误消息提示,springboot在resources目录下,有一个文件ValidationMessages.properties 用于存储 验证错误的消息提示: 比如: 这样一个ValidationMessage.properties username.notempty用户名不能为空 username.len…

vue3+ts 实现枚举

首先 index.ts 中定义枚举 export const fruit [{key:1,name:苹果,},{key:11,name:草莓},{key:5,name:香蕉,},{key:51,name:葡萄,},{key:6,name:橙子},{key:7,name:哈密瓜},{key:10,name:西瓜}, ]; 接口返给的数据是一个对象 feeMap{ 1:200, 2&…

如何用C#实现上位机与下位机之间的Wi-Fi通信?

有IP协议支持的话用UDP报文或者TCP直接发IP地址和端口不行么?你说的WiFi难道是2.4GHz频率模块那种东东? 你既然用了wifi,那么只要上位机和下位机的对应wifi网卡都具有ip地址以及其协议支持,那么和网络编程没啥子明显区别的吧………

基于低代码平台快速搭建应用

一、前言 近年来,SaaS行业的迅猛发展带动了低代码领域的快速兴起。国外的低代码创业公司如Mendix、Outsystems,以及国内的软件业巨头如华为、用友、金蝶等和小众高性价比的引迈JNPF都已经纷纷涉足低代码市场。根据Transparency Market Research的报告&am…

隐私计算互联互通第二批试点项目及标准解读

为进一步促进数据高效流通和数据要素市场高质量发展,推动隐私计算产业健康快速发展。2023隐私计算大会暨首届“星河杯”隐私计算大赛颁奖典礼活动于7月26日在青岛成功举办,吸引了过万人次关注。 DataFountain大数据竞赛平台(简称DF平台&…

基于Vue+ElementUI+Echarts+G2Plot的仪表盘设计器,代码完全开源

简介 🔥DashBoard基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的仪表盘设计器,具备仪表盘设计、预览、资源管理、组件管理等能力,支持JSON、MySQL、Oracle、PostgreSQL、HTTP、JavaScript、Groovy等数据集接入&#xf…

使用 GitHub Copilot 进行 Prompt Engineering 的初学者指南(译)

文章目录 什么是 GitHub Copilot ?GitHub Copilot 可以自己编码吗?GitHub Copilot 的底层是如何工作的?什么是 prompt engineering?这是 prompt engineering 的另一个例子 使用 GitHub Copilot 进行 prompt engineering 的最佳实践提供高级上下文&…

Linux将某个路径的python设置为默认python解释器

例如将/xxx/bin/python3路径的python3设置终端中python的默认解释器,使用以下方法中的其中一种即可: 1.使用update-alternatives命令: sudo update-alternatives --install /usr/bin/python python /xxx/bin/python3 1这将创建一个名为pyth…