前端 img图片如何 展示 base64 格式(并且下载到本地)

这篇具有很好参考价值的文章主要介绍了前端 img图片如何 展示 base64 格式(并且下载到本地)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如题:最近在做项目发现页面上有些图片是动态获取的,也就是后台给我们返回图片的存放地址,一般都是放在服务器上的某个位置,我们直接拿到渲染一下就行了,(前提是不存在跨域问题),

但是由于项目特殊性,后台使用了Python 渲染出来的图片是svg格式的图片,并且是矢量图,不太好转成 png这种图片,不可以直接存放地址,所以想到了用base64 不也行吗。。

例如:

 <div class="scatter" id="scatter" > 
      <img :src="inputImg" alt="" :style="{width:widthImg,height:heightImg}">
 </div>


//下面 直接使用vue 语法

// 接口获取到的 字段直接赋值即可

  this.inputImg = 'data:image/svg+xml;base64,' + res.data.body.data

这种后台数据返回格式如下:

前端 img图片如何 展示 base64 格式(并且下载到本地)

上面后台数据返回的是svg格式的 矢量图 ,为了更加清晰,不失真, 采用这种方法,所以我们对应的写好他的后缀,因为是xml格式所以这么写  'data:image/svg+xml;base64,'

既然有svg这种图片,也就存在png,jpg,jpeg等格式的图片,我们只需要确定后台使用的逻辑和方法返回对应的格式就行,jpeg格式:  this.imgUrl='data:image/jpeg;base64,'+res.data.data,

其它的图片应该也都类似,跨域问题自行解决。

那么展示出来的图片如何下载到本地呢?

解决方法:图片数据以 Base64 编码的字符串形式嵌入到 HTML 或 Js中,那么想要将这张图片保存到本地,就需要将该 Base64 编码的字符串转换为二进制数据,并将其存储为一个文件。可以直接使用a 标签,也可以使用 按钮或者其它标签,下面我是用了 饿了么ui的  el-button 按钮

代码:

<el-button type="primary" size="mini"  @click="updown">下载结果</el-button>


//对应的方法
updown(){
    var objimg='' 
   //这里objimg 表示图片显示的路径  一般都是data:image/jpeg;base64,iVBORw0KGgoAAAANS
   const byteCharacters = atob(objimg.split(',')[1])
   const byteNumbers = new Array(byteCharacters.length)
   for (let i = 0; i < byteCharacters.length; i++) {
      byteNumbers[i] = byteCharacters.charCodeAt(i)
   }
   const byteArray = new Uint8Array(byteNumbers)
    //区分是什么类型的 svg 或者是png 格式 切记不同类型后缀不同。使用错误可能会下载图片打不开
    var blobs=''
    if(this.active=='first' || this.active=='second' ||                
      this.active=='third'){
      blobs = 'image/svg+xml'
     }
     if(this.active=='four'){
          blobs = 'image/png'
     } 
     this.downLong=false
       let url = window.URL.createObjectURL(
              new Blob([byteArray], { type: blobs })
       );
       let link = document.createElement("a"); //创建a标签
       link.style.display = "none"; //将a标签隐藏
       link.href = url; //给a标签添加下载链接
       link.setAttribute("download", '运行结果图片' ); 
       document.body.appendChild(link);
       link.click(); //执行a标签
}

要注意的就是: 先把图片路径拿到,去解析成对应的类型,我们只解析 “base64,” 后面的字符串,所以先用split分割一下,后面都是根据不同类型生成不同的下载后缀,就可以了。

当然可以直接使用 a 标签来表示,这里是举例png格式的,其它格式参考上面的方法基本一样。

<a :href="downloadUrl" download="image.png">下载图片</a>

//方法
downloadUrl() {
      // 将 Base64 编码的字符串转换为二进制数据
      var objimg='' 
     //这里objimg 表示图片显示的路径  一般都是  data:image/jpeg;base64,iVBORw0KGgoAAAANS
      const byteCharacters = atob(objimg.split(',')[1])
      const byteNumbers = new Array(byteCharacters.length)
      for (let i = 0; i < byteCharacters.length; i++) {
        byteNumbers[i] = byteCharacters.charCodeAt(i)
      }
      const byteArray = new Uint8Array(byteNumbers)

      // 创建 Blob 对象并将其转换为 URL
      const blob = new Blob([byteArray], { type: 'image/png' })
      return URL.createObjectURL(blob)
    }

知识点:atob 是 js函数 里的解析base64 字符串的方法。它还有个兄弟btoa 是 编辑成base64格式的。

        charCodeAt()是字符串方法,用于检索字符串中特定位置的字符的Unicode 值。

        Uint8Array 是一个数组他表示,8位无符号整数,长度是1个字节。文章来源地址https://www.toymoban.com/news/detail-490306.html

到了这里,关于前端 img图片如何 展示 base64 格式(并且下载到本地)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【js】js前端技巧之图片格式转换(File、Blob、base64):

    一、类型简介 BLOB(binary large object) : 二进制大对象,是一个可以存储二进制文件的容器。 在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。 属性名称 读/写 描述 size 只读 Blob 对象中所包含数据的大小(字节)。 type 只读 一个字符串,表明该Blob对象所包含数据

    2024年02月07日
    浏览(38)
  • 如何将base64图片转化为URL格式

    1)将base64图片格式转为可读的url格式 将图片文件转为二进制,然后通过URL的createObjectURL函数,将二进制转为url格式 2)将图片转为文件

    2024年02月12日
    浏览(31)
  • 如何将图片转化为base64编码格式显示

    base64编码 是将数据用 64 个可打印的字符进行编码的方式,任何数据底层实现都是二进制,所以都可以进行 base64编码,base64编码 主要用在数据传输过程中(编码、解码)。而 Data URI 是将数据用 URI 的形式进行展现。常用的是将图片进行 base64 编码,用 Data URI 的形式进行展现,可

    2024年02月06日
    浏览(35)
  • Android中的图片如何转换成Base64格式

    Android手机客户端的图片数据上传到服务器中保存,首先需要将客户端的图片转换成Base64格式,然后才能通过网络上传到服务器中。 让客户端将图片上传到服务器,将图片的网络URL告诉服务器 将图片转成Base64编码,传递给服务器,服务器将Base64字符串解码之后生成一张图片。

    2023年04月27日
    浏览(30)
  • HTML img 元素无法显示 base64 图片的可能原因

    如果使用 base64 编码的图片在 HTML 的 img 元素中无法显示,可能有以下几个原因: 1、语法错误:img 元素中的 src 属性必须以 \\\"data:\\\" 开头,后面跟着 MIME 类型和 base64 编码的图片数据。如果这个语法格式有误,就无法正常显示图片。 2、MIME 类型错误:如果指定的 MIME 类型与实际

    2024年02月05日
    浏览(37)
  • 后端返回base64文件前端如何下载

    1.后端返回base64格式文件 2.前端代码 3.请求封装

    2024年02月05日
    浏览(41)
  • Python Selenium如何下载网页中的图片到本地?(Base64编码的图片下载)

    前言:                 在网页上,图片有时会以Base64编码的形式嵌入在HTML中,而不是作为单独的文件提供。这种方式的优点是可以减少HTTP请求的数量,因为图片数据直接包含在HTML中,不需要额外的请求来获取图片文件。这对于小图片或图标特别有用,因为这些图片的文

    2024年04月17日
    浏览(31)
  • 【base64】JavaScript&uniapp 将图片转为base64并展示

    Base64是一种用于编码二进制数据的方法,它将二进制数据转换为文本字符串。它的主要目的是在网络传输或存储过程中,通过将二进制数据转换为可打印字符的形式进行传输  图片大小从1.36MB到169kb 上面的代码中,toDataURL产生的是图片的base64编码,Base64编码必须是完整且正确

    2024年02月11日
    浏览(32)
  • uniapp+vue3+vant-weapp运行到微信小程序中绘制海报,将画布中绘制base64格式的图片以及长按进行图片的分享和下载

    对于uniapp绘制海报,遇到的难点就是将bas64格式的图片绘制上去,试了很多方式,终于找到了不错的方法, 先将其下载到本地,再进行绘制,以下就是 完整的代码 海报的内容可以根据自己的需求自行更改 ## 下面有一个测试base64格式的图片,可用替换成自己的实际路径 ## 长按

    2024年02月21日
    浏览(85)
  • 微信小程序常见图片格式转base64图片

    1、在utils文件下新建一个auth.js文件(随便取一个名字,你开心就行),在里面添加以下代码 如果是网络图片需要先使用wx.downloadFile({...})下载之后才可进行转换,本地的则直接转换即可你可根据具体需求修改代码,不要受此处代码影响。 2、在你需要使用的地方引入

    2024年02月06日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包