vue图片转base64格式的方法示例

 更新时间:2022年12月21日 14:55:55   作者:仗剑东游的猫  
对于前后端分离的项目,为了统一响应参数,需要将图片转换成base64的格式,下面这篇文章主要给大家介绍了关于vue图片转base64格式的相关资料,需要的朋友可以参考下

1.require的方式

用vue引入图片的require方式获取的值可以直接生成base64格式,但是该方法只适用于5kb大小以下的图片

const path = require('@/assets/images/test.png')

2.canvas.toDataURL()

该方法canvas.toDataURL(`image/${ext}`)传入的图片类型是什么生成后的base64数据前缀就是什么类型,如果传入的类型和生成的类型不同,则表示该方法不支持该类型的图片,例如gif图片转换后是png

imgUrlToBase64(url) {
      return new Promise((resolve, reject) => {
        if (!url) {
          reject('请传入url内容')
        }
        if (/\.(png|jpe?g|gif|svg)(\?.*)?$/.test(url)) {
          // 图片地址
          const image = new Image()
          // 设置跨域问题
          image.setAttribute('crossOrigin', 'anonymous')
          // 图片地址
          image.src = url
          image.onload = () => {
            const canvas = document.createElement('canvas')
            const ctx = canvas.getContext('2d')
            canvas.width = image.width
            canvas.height = image.height
            ctx.drawImage(image, 0, 0, image.width, image.height)
            // 获取图片后缀
            const ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase()
            // 转base64
            const dataUrl = canvas.toDataURL(`image/${ext}`)
            resolve(dataUrl || '')
          }
        } else {
          // 非图片地址
          reject('非(png/jpe?g/gif/svg等)图片地址');
        }
      })
    },

3.FileReader.readAsDataURL()

getBase64(imgUrl) {
      return new Promise((resolve, reject) => {
        if (!imgUrl) {
          reject('请传入imgUrl内容')
        }
        if (/\.(png|jpe?g|gif|svg)(\?.*)?$/.test(imgUrl)) {
          window.URL = window.URL || window.webkitURL
          var xhr = new XMLHttpRequest()
          xhr.open('get', imgUrl, true)
          xhr.responseType = 'blob'
          xhr.onload = function() {
            if (this.status == 200) {
              // 得到一个blob对象
              var blob = this.response
              const oFileReader = new FileReader()
              oFileReader.onloadend = function(e) {
                const base64 = e.target.result
                resolve(base64 || '')
              }
              oFileReader.readAsDataURL(blob)
            }
          }
          xhr.send()
        } else {
          // 非图片地址
          reject('非(png/jpe?g/gif/svg等)图片地址')
        }
      })
    },

总结

到此这篇关于vue图片转base64格式的文章就介绍到这了,更多相关vue图片转base64格式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue学习笔记之slot插槽基本用法实例分析

    vue学习笔记之slot插槽基本用法实例分析

    这篇文章主要介绍了vue学习笔记之slot插槽基本用法,结合实例形式分析了vue slot插槽基本使用方法与操作注意事项,需要的朋友可以参考下
    2020-02-02
  • vue如何引用其他组件(css和js)

    vue如何引用其他组件(css和js)

    本篇文章主要介绍了vue如何引用其他组件(css和js) ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 浅谈Vue.js 关于页面加载完成后执行一个方法的问题

    浅谈Vue.js 关于页面加载完成后执行一个方法的问题

    这篇文章主要介绍了Vue.js 关于页面加载完成后执行一个方法的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Vue中使用ElementUI使用第三方图标库iconfont的示例

    Vue中使用ElementUI使用第三方图标库iconfont的示例

    这篇文章主要介绍了Vue中使用ElementUI使用第三方图标库iconfont的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • 详解Vue3.x中组件间参数传递的示例代码

    详解Vue3.x中组件间参数传递的示例代码

    在 Vue3.x 中,组件间的参数传递是构建复杂应用时不可或缺的一部分,无论是父子组件还是兄弟组件之间,合理的数据流动都是保持应用状态一致性和可维护性的关键,本文将通过示例代码,详细介绍 Vue3.x 中组件间如何传递参数,需要的朋友可以参考下
    2024-03-03
  • 详解Vue如何支持JSX语法

    详解Vue如何支持JSX语法

    这篇文章主要介绍了详解Vue如何支持JSX语法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • vue.js如何将echarts封装为组件一键使用详解

    vue.js如何将echarts封装为组件一键使用详解

    Echarts 、 Remodal和Pikaday是我们在开发后台管理类网站时常用的三个第三方组件,下面这篇文章主要给大家介绍了关于vue.js如何将echarts封装为组件一键使用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-10-10
  • vue数据传递--我有特殊的实现技巧

    vue数据传递--我有特殊的实现技巧

    这篇文章主要介绍了vue数据传递一些特殊梳理技巧,需要的朋友可以参考下
    2018-03-03
  • vue3中form对象无法赋值的问题解决

    vue3中form对象无法赋值的问题解决

    这篇文章给大家介绍了vue3中form对象无法赋值的问题解决,有时候对象的值死活赋不上值,这时候可以看下赋值的对象变量名是否和页面组件中的ref相同,文中给出了代码示例供大家参考,需要的朋友可以参考下
    2024-01-01
  • Vue中Mustache引擎插值语法使用详解

    Vue中Mustache引擎插值语法使用详解

    在Vue中通过Mustache模板引擎将data中的文本数据插入到HTML中,下面这篇文章主要给大家介绍了关于Vue中Mustache模板引擎插值语法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12

最新评论