首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在单个HTML / PHP文件中嵌入图像?

如何在单个HTML / PHP文件中嵌入图像?
EN

Stack Overflow用户
提问于 2010-02-25 04:44:55
回答 3查看 52.1K关注 0票数 24

我正在创建一个轻量级的单文件数据库管理工具,我想将一些小图标与它捆绑在一起。在HTML/PHP文件中嵌入图像的最佳方式是什么?

我知道一种使用PHP的方法,在这种方法中,我会使用GET参数调用相同的文件,该参数将输出具有正确标头的硬编码二进制数据,但这似乎有点复杂。

我可以使用一些东西在CSS background-image声明中直接传递图像吗?这将允许我使用CSS精灵技术。

浏览器支持在这里不是问题,所以也欢迎更奇特的方法。

编辑

有没有人有一个链接/例子,教你如何用PHP正确地生成数据URL?我认为echo 'data:image/png;base64,'.base64_encode(file_get_contents('image.png'))就足够了,但我可能错了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-25 04:49:08

将图像直接嵌入到HTML页面中的解决方案是使用data URI scheme

例如,您可以使用HTML的某个部分,如下所示:

代码语言:javascript
复制
<img src="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGP
C/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IA
AAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1J
REFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jq
ch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0
vr4MkhoXe0rZigAAAABJRU5ErkJggg==" alt="Red dot" />

在我链接的维基百科页面上还有其他的解决方案:

  • 将图像作为CSS规则包含在
  • 中,使用一些Javascript。

但请注意,这些解决方案并不是在所有浏览器上都有效--这取决于您在特定情况下是否可以接受。

要回答你提出的关于“如何正确地使用生成数据”的问题,请在维基百科的Data URI scheme页面稍微低一点看看,它给出了这部分代码(引用):

代码语言:javascript
复制
function data_uri($file, $mime) 
{  
  $contents = file_get_contents($file);
  $base64   = base64_encode($contents); 
  return ('data:' . $mime . ';base64,' . $base64);
}
?>

<img src="<?php echo data_uri('elephant.png','image/png'); ?>" alt="An elephant" />
票数 50
EN

Stack Overflow用户

发布于 2010-02-25 04:48:18

票数 6
EN

Stack Overflow用户

发布于 2010-03-09 18:18:53

对于一个PHP服务器端脚本,尝试对图形进行base64编码,并使用简单的控制器样式逻辑:

代码语言:javascript
复制
<?
/* store image mime-type and data in script use base64 */
$images = array('photo.png' => array('mimetype' => 'image/png',
                                     'data' => '...'));
/* use request path, e.g. index.php/photo.png */
$action = substr($_SERVER['PATH_INFO'], 1);
switch($action) {
case (preg_match('/\.png$/', $action)?$action:!$action):
  header("Content-Type: {$images[$action]['mimetype']}");
  /* use expires to limit re-requests on navigation */
  $expires = gmdate('D, d M Y H:i:s \G\M\T', filetime(__FILE__) + 365*24*60*60);
  header("Expires: {$expires}");
  $data = base64_decode($images[$action]['data']);
  header('Content-Length: ' . strlen($data));
  echo $data;
  break;
...
}
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2329364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档