【问题标题】:The image stored in database base64 format how can retrieve it back in its original format in PHP以数据库base64格式存储的图像如何在PHP中以原始格式检索
【发布时间】:2018-07-22 10:55:26
【问题描述】:

我已经将图像以 base64 格式存储在数据库中(存储格式:data:image/jpeg;base64,/9j/4AAQSkZJR)现在我想使用 PHP 从数据库中返回图像,我用了所有的方法,但是没有用。

我目前的方法是

【问题讨论】:

  • 请将您的代码写成文本而不是使用图像。
  • 您说您将图像作为 base 64 编码字符串存储在数据库中。那么为什么你在你的回声中再次对其进行base64_encode呢?
  • 顺便说一句,您最好将图像保存在文件夹中,并将图像的路径存储在数据库中;-)

标签: php html mysql


【解决方案1】:

这个解决方案可能适合你:

How to decode a base64 string (gif) into image in PHP / HTML

引用该来源但修改: 如果您去掉第一种情况并选择解码字符串,您应该在回显解码的图像数据之前添加它:

header("Content-type: image/gif");
$data = "/9j/4AAQSkZJRgABAQEAYABgAAD........";
echo base64_decode($data);

在第二种情况下,改用这个:

echo '<img src="data:image/gif;base64,' . $data . '" />';

第二种情况不好,因为如果同一图像显示在多个页面上,浏览器不会执行缓存。

【讨论】:

    【解决方案2】:

    你需要做的是从db中读取base64并用它来创建一个图像文件,这里是一个从base64创建jpeg图像的函数

    function base64_to_jpeg($base64, $jpeg) {
    
        $fp = fopen($jpeg, 'wb'); 
        $data = explode(',', $base64);
        fwrite($fp, base64_decode($data[1]));
        fclose( $fp ); 
    
        return $jpeg; 
    }
    

    该函数将返回 jpeg 文件对象

    【讨论】:

    • 我必须为多个图像做,因为我存储了多个图像
    • 你可以得到所有的base^4字符串并把它放在一个循环中,然后调用这个函数,它将创建这些图像中的每一个
    猜你喜欢
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2015-10-13
    相关资源
    最近更新 更多