VUE Base64编码图片展示与转换图片

VUE Base64编码图片展示与转换图片

图片的 base64 编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址,使用 base64 传输图片文件可以节省一个 http 请求,图片的 base64 编码可以算是前端优化的一环

VUE Base64编码图片展示

<img :src="icon">
export default {
   data() {
      icon: 'data:image/png;base64,,XXXXX...',
   }
}

图片在线转换Base64:
http://imgbase64.duoshitong.com/

Base64编码转换图片

base64ImgtoFile(dataurl, filename = 'file') {
  let arr = dataurl.split(',')
  let mime = arr[0].match(/:(.*?);/)[1]
  let suffix = mime.split('/')[1]
  let bstr = atob(arr[1])
  let n = bstr.length
  let u8arr = new Uint8Array(n)
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n)
  }
  return new File([u8arr], `${filename}.${suffix}`, {
    type: mime
  })
}// base64编码的图片
var base64Img = 'data:image/png;base64,XXXXX...';
//转换图片文件
var imgFile = this.base64ImgtoFile(base64Img); 

文件转换base64编码

<el-upload
         class="avatar-uploader"
         action=""
         ref="uploadAvatar"
         :show-file-list="false"
         :auto-upload="false"
         :on-change="changeFile">
     <img v-if="imageUrl" :src="imageUrl" class="uploadAvatar">
     <i v-else class="el-icon-plus avatar-uploader-icon"></i>
 </el-upload>

data() {
  return {
	imageUrl: '',
	imageBaseUrl: '',
  }
}
 /**
 * 文件框改变事件
 * @param file
 * @param fileList
 */
changeFile(file, fileList) {
    const isJPGORPNG = (file.raw.type === 'image/jpeg' || file.raw.type === 'image/png');
    const isLt1M = file.size / 1024 / 1024 < 1;

    if (!isJPGORPNG) {
        this.$message.info('上传头像图片只能是 JPG 或 PNG 格式!');
        return;
    }
    if (!isLt1M) {
        this.$message.info('上传头像图片大小不能超过 1MB!');
        return;
    }

    var This = this;
    var reader = new FileReader();
    reader.readAsDataURL(file.raw);
    reader.onload = function(e){
        this.result; //base64编码
        This.imageBaseUrl = this.result;
        This.imageUrl = this.result;
   

更便捷的图片转化Base64编码方式

利用 Chrome 浏览器,在 chrome 下新建一个窗口,然后把要转化的图片直接拖入浏览器,打开控制台,点 Source,如下图所示,点击图片,右侧就会显示该图片的 base64 编码
在这里插入图片描述以上为本篇文章的主要内容,希望大家多提意见,如果喜欢记得点个推荐哦

作者:95.8℃
出处:https://www.cnblogs.com/maggieq8324/
本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。

Vue3中,你可以使用`FileReader API`和`canvas`来将Base64编码图片数据转换为真正的图片,并将其显示在页面上。这里是一个简单的示例: 首先,你需要安装一个叫做`vue-file-preview`的轻量级库,它可以帮助处理文件预览。你可以使用npm或yarn来安装: ```bash npm install vue-file-preview # 或者 yarn add vue-file-preview ``` 然后,在组件中引入并使用它: ```html <!-- 引入样式 --> <link rel="stylesheet" href="@/node_modules/vue-file-preview/dist/file-preview.css" /> <!-- 在template中使用 --> <template> <div> <file-preview ref="preview" :file="fileToPreview" /> </div> </template> <script> import { ref } from 'vue'; import FilePreview from 'vue-file-preview'; export default { components: { FilePreview }, setup() { const fileToPreview = ref(null); // 当Base64字符串可用时,调用这个方法转换并设置到组件 const convertBase64ToImage = async (base64Data) => { try { const blob = await atob(base64Data); const reader = new FileReader(); reader.readAsDataURL(blob); reader.onload = async () => { const imgBlob = new Blob([reader.result.slice(reader.result.indexOf(',') + 1)], { type: 'image/jpeg' // 或者根据实际的图片类型调整 }); setFileToPreview(URL.createObjectURL(imgBlob)); // 设置到组件的引用中 }; } catch (error) { console.error('Error converting Base64 to image:', error); } }; return { fileToPreview, convertBase64ToImage // 如果你有一个Base64字符串,可以在这里调用它 }; } }; </script> ``` 在这个例子中,`fileToPreview`是一个Vue ref,用来存储图片的URL。`convertBase64ToImage`函数接收一个Base64字符串,解码后转换为Blob对象,再创建一个URL对象来展示图片。 相关问题: 1. 为什么需要`FileReader API`? 2. `URL.createObjectURL`的作用是什么? 3. 如何处理Base64字符串失效的情况?
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值