Base64编码图像

我正在build立一个Firefox / IE的开放search插件,图像需要Base64编码,所以我如何基地64编码我的图标?

我只熟悉PHP

据我记得有一个XML元素的图像数据。 您可以使用此网站对文件进行编码(使用上传字段)。 然后,将数据复制并粘贴到XML元素。

你也可以使用PHP来做到这一点:

<?php $im = file_get_contents('filename.gif'); $imdata = base64_encode($im); ?> 

使用Mozilla的指南来帮助创buildOpenSearch插件。 例如,图标元素是这样使用的:

 <img width="16" height="16">data:image/x-icon;base64,imageData</> 

imageData是你的base64数据。

 $encoded_data = base64_encode(file_get_contents('path-to-your-image.jpg')); 

我的rfc2397简介是:

一旦你的base64编码的图像数据放在以“ data:{mimetype};base64, ”为前缀的<Image> </ Image>标签中data:{mimetype};base64,这与url() CSS或[X] HTML中的img标签的src属性的引用值。 您可以通过将data:image/...行插入URL字段并按下回车来testingfirefox中的数据url,它应该显示您的图像。

对于实际的编码,我认为我们需要浏览所有的选项,而不仅仅是PHP,因为base64有很多种编码方式。

  1. 使用base64命令行工具。 它是GNU coreutils(v6 +)的一部分,在任何Cygwin , Linux , GnuWin32安装中都是默认的,但不是我试过的BSD。 问题: $ base64 imagefile.ico > imagefile.base64.txt
  2. 使用一个具有转换为base64选项的工具,如Notepad ++ ,它具有插件 – > MIME工具 – > base64编码
  3. 通过电子邮件发送文件并查看原始电子邮件内容,复制并粘贴。
  4. 使用网页 表单 。

关于MIMEtypes的说明:我宁愿你使用image/png image/jpegimage/gif因为我无法findstream行的image/x-icon 。 应该是image/vnd.microsoft.icon ? 其他格式也短得多。

比较265字节与1150字节:

 data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAVFBMVEWcZjTcViTMuqT8/vzcYjTkhhTkljT87tz03sRkZmS8mnT03tT89vTsvoTk1sz86uTkekzkjmzkwpT01rTsmnzsplTUwqz89uy0jmzsrmTknkT0zqT3X4fRAAAAbklEQVR4XnXOVw6FIBBAUafQsZfX9r/PB8JoTPT+QE4o01AtMoS8HkALcH8BGmGIAvaXLw0wCqxKz0Q9w1LBfFSiJBzljVerlbYhlBO4dZHM/F3llybncbIC6N+70Q7OlUm7DdO+gKs9gyRwdgd/LOcGXHzLN5gAAAAASUVORK5CYII= data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAD/////ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv///////////2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb///////////9mZmb/ZmZm//////////////////////////////////////////////////////9mZmb/ZmZm////////////ZmZm/2ZmZv//////ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv//////ZmZm/2ZmZv///////////2ZmZv9mZmb//////2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb//////2ZmZv9mZmb///////////9mZmb/ZmZm////////////////////////////8fX4/8nW5P+twtb/oLjP//////9mZmb/ZmZm////////////////////////////oLjP/3eZu/9pj7T/M2aZ/zNmmf8zZpn/M2aZ/zNmmf///////////////////////////////////////////zNmmf8zZpn/M2aZ/zNmmf8zZpn/d5m7/6C4z/+WwuH/wN/3//////////////////////////////////////+guM//rcLW/8nW5P/x9fj//////9/v+/+w1/X/QZ7m/1Cm6P//////////////////////////////////////////////////////7/f9/4C+7v8xluT/EYbg/zGW5P/A3/f/0933/9Pd9//////////////////////////////////f7/v/YK7q/xGG4P8RhuD/MZbk/7DX9f//////4uj6/zJh2/8yYdv/8PT8////////////////////////////UKbo/xGG4P8xluT/sNf1////////////4uj6/zJh2/8jVtj/e5ro/////////////////////////////////8Df9/+gz/P/////////////////8PT8/0944P8jVtj/bI7l/////////////////////////////////////////////////////////////////2yO5f8jVtj/T3jg//D0/P///////////////////////////////////////////////////////////3ua6P8jVtj/MmHb/+Lo+v////////////////////////////////////////////////////////////D0/P8yYdv/I1bY/9Pd9///////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== 

检查下面的例子

 <?php // First get your image $image = 'path-to-your-picture/image.jpg'; $picture = base64_encode(file_get_contents($image)); echo '<img width="100" height="100" src="data:image/jpg;base64,'. $picture .'" />' ?> 

Google把我引向了这个解决scheme(base64_encode)。 希望这可以帮助!