img标签渲染图片流

图片流

有时候服务端返回的一张图片是一串文件流,而文件流无法直接加在 img 标签上进行渲染,如下:
在这里插入图片描述
哦豁,有点蛋疼了吧。

这时候请求的链接其实就是当前图片的路径。

但是我们的图片路径往往是通过网络请求出来的,它是动态的。
这时候可以试试这个。

axios 解决

通过在 axios 添加responseType: "blob",将当前的请求变成blob这时候就能得到如下
在这里插入图片描述
然而由于是 blob格式的 我们依然无法直接将返回结果直接放在img标签进行展示。
这时候我们还需要window.URL.createObjectURL(res.data);将当前的blob转化一下,如图
在这里插入图片描述
axios 示例

request({
        url: API.getQrCode,
        method: "get",
        responseType: "blob",
      })
        .then((res) => {
        
          if (res.data.size < 100) {
            this.$message({
              showClose: true,
              center: true,
              message: "生成二维码失败!",
              type: "error",
            });
            this.qrCode = "";
            return;
          }
          this.qrCode = window.URL.createObjectURL(res.data);
        })
        .catch((err) => {
          this.qrCode = "";
          console.log(err);
        });
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: PNG(Portable Network Graphics)是一种无损的位图图像格式,旨在替代GIF格式。PNG图像可以支持多种色彩空间和透明度,以及不同的图像压缩算法。 前端处理图片时,PNG格式通常用于保留透明度,例如创建圆角图片或阴影效果。此外,PNG格式还可以用于在网页上显示透明的网页标签或图标。 要处理PNG图像,您可以使用各种图像编辑软件,例如Adobe Photoshop或GIMP。您可以使用这些软件来剪裁、调整大小、更改透明度或应用其他滤镜或效果。 ### 回答2: 前端处理图片PNG的过程主要分为以下几个步骤: 1. 获取图片:首先从服务器获取图片,可以使用向服务器发送请求的方式获取图片的二进制数据。 2. 创建图片对象:通过使用Blob对象或者Data URI将获取到的图片二进制数据转换成图片对象。Blob对象可以通过URL.createObjectURL(blob)方法来创建,Data URI可以直接将图片二进制数据转换成base64编码的字符串。 3. 渲染图片:在HTML页面上,可以使用<img>标签将获取到的图片对象进行渲染,显示在页面上。设置<img>标签的src属性为之前创建的Blob对象的URL或者Data URI字符串。 4. 处理图片:如果需要对图片进行处理,可以使用HTML5中的Canvas元素来进行操作。将<img>标签中的图片绘制到Canvas上,然后使用Canvas的相关API进行图片的处理,比如调整大小、裁剪、旋转等操作。 5. 导出图片:如果需要将处理后的图片导出,在Canvas上进行处理后,可以将Canvas上的内容导出为图片,通常使用Canvas的toDataURL()方法将处理后的图片转换成Data URI字符串,然后可以下载或者展示在页面上。 总结起来,前端处理图片PNG的主要步骤包括获取图片、创建图片对象、渲染图片、处理图片和导出图片。通过这些步骤,前端可以实现对PNG格式的图片进行处理和展示。 ### 回答3: 在前端处理PNG图片时,首先我们需要获取图片数据,可以通过网络请求获取到图片的二进制数据。接下来,我们可以使用JavaScript的FileReader对象将图片转换为可读取的数据。 通过FileReader的readAsDataURL方法,我们可以将图片转换为Base64格式的字符串,这样我们就可以在前端进行展示或者其他操作。读取图片的代码如下所示: ```javascript function handlePNGImageStream(imageStream) { const reader = new FileReader(); reader.onload = function(event) { const base64Image = event.target.result; // 在这里可以将base64格式的图片进行展示或者其他处理 }; reader.readAsDataURL(imageStream); } // 模拟获取图片的操作 fetch('image.png') .then(response => response.blob()) .then(blob => handlePNGImageStream(blob)); ``` 在上述代码中,我们通过fetch方法模拟了获取图片的操作,然后将获取到的数据传给handlePNGImageStream函数。在handlePNGImageStream函数中,我们创建了一个FileReader对象,并设置了它的onload事件处理函数,当文件读取完成时,将触发该事件。 在事件处理函数中,我们可以通过event.target.result获取到Base64格式的图片字符串,然后可以将其展示在页面上或者进行其他操作。 总之,前端处理PNG图片主要是通过将图片转换为Base64格式的字符串来进行操作,这样便于在前端进行显示和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问问那只猫

老板大气~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值