PHP:如何将图像从URL转换为Base64?

时间:2010-12-03 08:30:44

标签: php binary base64

我想将图片从其网址转换为base64。

5 个答案:

答案 0 :(得分:30)

您要创建数据网址吗?您需要MIME类型和其他一些其他信息(参见Wikipedia)。如果不是这种情况,这将是图像的简单base64表示:

$b64image = base64_encode(file_get_contents('path/to/image.png'));

相关文档:base64_encode()-functionfile_get_contents()-function

答案 1 :(得分:10)

我在这个问题上寻找类似的解决方案,实际上,我明白这是原来的问题。

我想做同样的事情,但文件是在远程服务器上,所以这就是我所做的:

$url = 'http://yoursite.com/image.jpg';
$image = file_get_contents($url);
if ($image !== false){
    return 'data:image/jpg;base64,'.base64_encode($image);

}

因此,此代码来自一个返回字符串的函数,您可以在html中输出img标记的src参数内的返回值。我使用smarty作为我的模板库。它可以是这样的:

<img src="<string_returned_by_function>">

请注意显式调用:

if ($image !== false)

这是必要的,因为file_get_contents可以返回0并在某些情况下被转换为false,即使文件获取成功也是如此。实际上在这种情况下它不应该发生,但在获取文件内容时这是一个很好的做法。

答案 2 :(得分:9)

试试这个: -

示例一: -

<?php 
function base64_encode_image ($filename=string,$filetype=string) {
    if ($filename) {
        $imgbinary = fread(fopen($filename, "r"), filesize($filename));
        return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary);
    }
}
?>

used as so

<style type="text/css">
.logo {
    background: url("<?php echo base64_encode_image ('img/logo.png','png'); ?>") no-repeat right 5px;
}
</style>

or

<img src="<?php echo base64_encode_image ('img/logo.png','png'); ?>"/>

示例二: -

$path= 'myfolder/myimage.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);

答案 3 :(得分:1)

我不确定,但请查看此示例http://www.php.net/manual/es/function.base64-encode.php#99842

问候!

答案 4 :(得分:-1)