在HTML网页或者是HTA程序里, 你可以显示图片却不用引用外部的图片. 原理就是 IMG 标签支持内链 图片 base64 格式. 任何二进制文件都是由 8位一个字节一个字节组成的, 但是可打印的字符只是用到了7位 ASCII 1-127. 如果使用base 64 format 来表示图片 那么 3个字节 (3×8) 实际上是会用 4个字节(4×6)来表示.
HTML 插入内链图片的语法是: Share on X<img src=’data:image/jpeg;base64,DATA-DATA-DATA….’>
比如 下面的清纯美女图就是 完全内链 INLINE到HTML代码中
支持的图片类型有 image/jpeg, image/png, image/bmp, 和 image/gif.
方便转换的API
准备了一个API可以方便转换网上的图片为需要的文本数据:
https://helloacm.com/api/image-to-base64/?url=https://justyy.com/YY.png
会返回一串BASE64字符串:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAA中间很多省略了YII=
可以选择 这个免费的图床 https://uploadbeta.com 上传图片 然后就可以把图片的URL做为参数传到上面的API中.
什么时候使用?
1. 当图片较小时
2. 图片不需要时常更新
3. 服务器支持gzip压缩 HTML. 用这种方法会无形中增加图片大小1/3 并且不支持缓存(如果是以图片文件存在的话 浏览器能缓存)
PHP 源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | $url = ''; if (isset($_GET['url'])) { $url = trim($_GET['url']); } $data = ''; if ($url) { $size = getimagesize($url); switch ($size['mime']) { case "image/gif": $data .= "data:image/gif;base64,"; break; case "image/jpeg": $data .= "data:image/jpeg;base64,"; break; case "image/png": $data .= "data:image/png;base64,"; break; case "image/bmp": $data .= "data:image/bmp;base64,"; break; } if ($data) { $data .= base64_encode(file_get_contents($url)); } } header("Access-Control-Allow-Origin: *"); header('Content-Type: application/json'); die(trim($data)); |
$url = ''; if (isset($_GET['url'])) { $url = trim($_GET['url']); } $data = ''; if ($url) { $size = getimagesize($url); switch ($size['mime']) { case "image/gif": $data .= "data:image/gif;base64,"; break; case "image/jpeg": $data .= "data:image/jpeg;base64,"; break; case "image/png": $data .= "data:image/png;base64,"; break; case "image/bmp": $data .= "data:image/bmp;base64,"; break; } if ($data) { $data .= base64_encode(file_get_contents($url)); } } header("Access-Control-Allow-Origin: *"); header('Content-Type: application/json'); die(trim($data));
参考:
1. http://www.techerator.com/2011/12/how-to-embed-images-directly-into-your-html/
2. https://rot47.net/base64encoder.html
3. https://steakovercooked.com/src/online_encode/
英文: https://helloacm.com/embed-images-in-html-source/
强烈推荐
- 英国代购-畅购英伦
- TopCashBack 返现 (英国购物必备, 积少成多, 我2年来一共得了3000多英镑)
- Quidco 返现 (也是很不错的英国返现网站, 返现率高)
- 注册就送10美元, 免费使用2个月的 DigitalOcean 云主机(性价比超高, 每月只需5美元)
- 注册就送10美元, 免费使用4个月的 Vultr 云主机(性价比超高, 每月只需2.5美元)
- 注册就送10美元, 免费使用2个月的 阿里 云主机(性价比超高, 每月只需4.5美元)
- 注册就送20美元, 免费使用4个月的 Linode 云主机(性价比超高, 每月只需5美元) (折扣码: PodCastInit2022)
- PlusNet 英国光纤(超快, 超划算! 用户名 doctorlai)
- 刷了美国运通信用卡一年得到的积分 换了 485英镑
- 注册就送50英镑 – 英国最便宜最划算的电气提供商
- 能把比特币莱特币变现的银行卡! 不需要手续费就可以把虚拟货币法币兑换
微信公众号: 小赖子的英国生活和资讯 JustYYUK