【发布时间】:2011-02-17 22:23:08
【问题描述】:
如何将 .png 文件嵌入到空白的“file.html”中,以便在任何浏览器中打开该文件时都能看到该图像?
在这种情况下,图像文件不是从 HTML 链接到的,而是图像数据嵌入在 HTML 本身中。
【问题讨论】:
如何将 .png 文件嵌入到空白的“file.html”中,以便在任何浏览器中打开该文件时都能看到该图像?
在这种情况下,图像文件不是从 HTML 链接到的,而是图像数据嵌入在 HTML 本身中。
【问题讨论】:
网上有一些Base64 编码器可以帮助你解决这个问题,这可能是我见过的最好的:
http://www.greywyvern.com/code/php/binary2base64
由于该页面显示您的主要选项是 CSS:
div.image {
width:100px;
height:100px;
background-image:url(data:image/png;base64,iVBORwA<MoreBase64SringHere>);
}
或者<img>标签本身,像这样:
<img alt="My Image" src="data:image/png;base64,iVBORwA<MoreBase64SringHere>" />
【讨论】:
64base 方法也适用于大图像。我使用这种方法将所有图像嵌入到我的网站中,并且每次都有效。我已经处理了最大 2 MB 大小、JPEG 和 PNG 的文件。
【讨论】:
我现在偶然发现了类似的问题,解决方案是:
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use GD::Graph::pie;
use MIME::Base64;
my @data = (['A','O','S','I'],[3,16,12,47]);
my $mygraph = GD::Graph::pie->new(200, 200);
my $myimage = $mygraph->plot(\@data)->png;
print <<end_html;
<html><head><title>Current Stats</title></head>
<body>
<p align="center">
<img src="data:image/png;base64,
end_html
print encode_base64($myimage);
print <<end_html;
" style="width: 888px; height: 598px; border-width: 2px; border-style: solid;" /></p>
</body>
</html>
end_html
【讨论】:
快速的 Google 搜索表明您可以像这样嵌入它:
<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub/
/ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcpp
V0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7"
width="16" height="14" alt="embedded folder icon">
但您需要在 Internet Explorer 中进行不同的实现。
http://www.websiteoptimization.com/speed/tweak/inline-images/
【讨论】:
src 的长度是有限制的。除此之外,它是丑陋的恕我直言:)
使用mod_rewrite 将对file.html 的调用重定向到image.png,而不为用户更改URL。
您是否尝试过将 image.png 文件重命名为 file.html?我认为大多数浏览器都采用 mime 标头而不是文件扩展名:)
【讨论】:
您可以嵌入 png 图像,就像您可以从设备或网络将 jpg 图像或任何类型的图像嵌入 html 中一样。
保存在设备上时,请确保图片的类型为 png。方法相同,但我将其嵌入为 jpg。<embed type="image/jpg" src="https://s3-us-west-2.amazonaws.com/textimgs/music/250px-Antonio_Vivaldi.jpg" width="500" height="500">
</EMBED>
我要感谢 Stack Overflow 让我们提问和回答!!!!!!!!!!!!!!!
【讨论】:
<embed> 标签在技术上没有错,但最好使用<image> 标签。
您可以使用其他答案中列出的方法嵌入图像,例如在 HTML 中
<img alt="My Image" src="data:image/png;base64,base64-data-goes-here" />
或 CSS
div#my-image {
width:150px;
height:100px;
background-image:url(data:image/png;base64,base64-data-goes-here);
}
对于 Base64 编码,在 Linux 上,我使用标准的 base64 工具并关闭换行,如下所示:
base64 -w 0 my-image.png
并逐字复制/粘贴输出文本。
【讨论】: