使用php打印base64加密图像时图像损坏

使用php打印base64加密图像时图像损坏,php,image,base64,Php,Image,Base64,我将imagea加密到base64中,然后将它们存储在数据库中。然后我使用PHP打印图像,但有时会得到损坏的图像。如果我将相同的代码放在HTML文件中,或者如果我多次刷新页面,那么它就会工作 这是我损坏的图像: 我的HTML如下所示: 注意:_encrypteddata_是我的加密图像,我不能在这里发布大量数据 它工作得很好,但有时它会显示一个具有相同数据的连续损坏的图像。它在浏览器或base64上有问题吗 我对所有图标都使用image/png。这会导致任何问题吗?我认为这是来自浏览器 注意:每

我将imagea加密到base64中,然后将它们存储在数据库中。然后我使用PHP打印图像,但有时会得到损坏的图像。如果我将相同的代码放在HTML文件中,或者如果我多次刷新页面,那么它就会工作

这是我损坏的图像:

我的HTML如下所示:

注意:_encrypteddata_是我的加密图像,我不能在这里发布大量数据

它工作得很好,但有时它会显示一个具有相同数据的连续损坏的图像。它在浏览器或base64上有问题吗


我对所有图标都使用image/png。这会导致任何问题吗?

我认为这是来自浏览器

注意:每次加载页面时从数据库检索图像数据可能会很慢


尝试在文件系统中编写一个包含数据的图像文件,并在HTML中链接到此文件。它将更快、更健壮

我想这是来自浏览器

注意:每次加载页面时从数据库检索图像数据可能会很慢

尝试在文件系统中编写一个包含数据的图像文件,并在HTML中链接到此文件。它将更快、更健壮

我得到了这个解决方案

<img src='data:image/;base64,_encrypteddata_'/>

我得到了这个解决方案

<img src='data:image/;base64,_encrypteddata_'/>

基本上base64可以获得大量存储加密数据(尤其是图像)的内存,所以无论何时从数据库中获得少量的海量数据,都需要一些时间才能加载。有时,浏览器不会等待太多时间解密,以便您可以看到损坏的图像

您最好将图像存储在本地文件系统中,而不是存储到数据库中。这会加快你的进程

使用此代码将数据存储到本地文件系统

function get_image($image_url, $localPathToStore)
{
    echo $url . "<br>" . $saveto;
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
    $raw = curl_exec($ch);
    curl_close($ch);
    if (file_exists($saveto)) {
        unlink($saveto);
    }
    $fp = fopen($saveto, 'x');
    fwrite($fp, $raw);
    fclose($fp);
}
基本上,base64可以获得大量内存来存储加密数据,尤其是图像,所以无论何时从数据库中获取少量的海量数据,都需要一些时间才能加载。有时,浏览器不会等待太多时间解密,以便您可以看到损坏的图像

您最好将图像存储在本地文件系统中,而不是存储到数据库中。这会加快你的进程

使用此代码将数据存储到本地文件系统

function get_image($image_url, $localPathToStore)
{
    echo $url . "<br>" . $saveto;
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
    $raw = curl_exec($ch);
    curl_close($ch);
    if (file_exists($saveto)) {
        unlink($saveto);
    }
    $fp = fopen($saveto, 'x');
    fwrite($fp, $raw);
    fclose($fp);
}

看起来更像是我找不到的404。检查DOM时,图像的URL是什么?当您在浏览器中输入该URL时,图像是否加载?如果我将整个数据复制到另一个文件中,则图像的URL会显示确切的数据,为什么要加密?还是说编码?它也不应该很大。对于这么小的图像,只有几百个字节。看起来更像是我找不到的404。检查DOM时,图像的URL是什么?当您在浏览器中输入该URL时,图像是否加载?如果我将整个数据复制到另一个文件中,则图像的URL会显示确切的数据,为什么要加密?还是说编码?它也不应该很大。对于这么小的图像,只有几百个字节。