1
0
积极分子
点赞 + 收藏 === 学会🤣🤣🤣
你有没有在写前端的时候,突然迷糊了:
为啥这张图片能直接 src="https://xxx.jpg" 就能展示? 为啥有时候图片是乱七八糟的一串 Base64? 有的还整出来个 Blob,看不懂但好像很高级? 有时还来个 ArrayBuffer,这又是哪位大哥? 最离谱的是:我本地图片路径写进去,怎么就不生效?
src="https://xxx.jpg"
ArrayBuffer
这些,其实都和“图像在前端的存在形式”有关。今天咱们就像唠家常一样,一口气整明白这几个常见的前端图像形式,用最接地气的方式讲明白,配上实例、场景分析,帮你彻底建立系统认知!
<img src="https://example.com/image.jpg" />
这就是我们最常见的方式:网络地址。
📦 本质上是啥? 一个 HTTP(S) 请求,浏览器去服务器上拉图片回来。
👍 优点:
👎 缺点:
🧩 常见场景:
<img src="./images/logo.png" />
听起来像本地文件,实际上也是被打包进项目的资源文件路径。
⚙️ 本质上是啥? 开发时是相对路径,生产环境通常会被 Webpack、Vite 等构建工具“处理成”一个真实可访问的路径,比如 dist/assets/logo.abcd1234.png。
dist/assets/logo.abcd1234.png
👀 你可能踩过的坑:
💡 使用建议:
public
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA..." />
这是把图片数据编码成 Base64 的字符串,直接塞进 HTML 或 JS 文件里。
🔬 本质上是啥? Base64 是一种将二进制数据编码成 ASCII 字符串的方式。
✅ 优点:
❌ 缺点:
CSS background-image
const blob = new Blob([arrayBuffer], { type: 'image/png' }); const url = URL.createObjectURL(blob); img.src = url;
这是处理文件流时常见的一种格式。
🔍 本质上是啥? Blob 是浏览器提供的一种二进制大对象,可以把它看作 JS 里的“文件”。
Blob
💪 优点:
URL.createObjectURL()
📉 缺点:
canvas.toBlob()
fetch('image.jpg') .then(res => res.arrayBuffer()) .then(buffer => { // 可以转为 blob 或 base64 再显示 });
这是最底层的图像数据,直接以字节数组的形式存在。
🧠 本质上是啥? ArrayBuffer 是一段原始的内存区域,常用于处理二进制数据,Uint8Array 是对它的视图(读取用)。
Uint8Array
🧰 常见用途:
🔄 转换方式:
new Blob([buffer])
btoa(String.fromCharCode(...new Uint8Array(buffer)))
掌握这些图像“存在形式”,不仅能帮你写出更高效、稳定的代码,更能在项目中灵活切换,游刃有余!
使用道具 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com
Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.