我将imagea加密到base64然后将它们存储在数据库中。然后我使用PHP打印图像,但有时我会得到一个损坏的图像。如果我将相同的代码放在HTML文件中,或者我多次刷新页面,那么它就可以了。
这是我损坏的图片:
我的HTML看起来像这样:
<img src="data:image/png;_encrypteddata_" />
注意:_encrypteddata_
是我的加密图片(我无法在此发布大量数据)
它工作正常,但有时会显示具有相同数据的连续损坏的图像。它是否有浏览器或base64的问题?
我使用image/png
表示所有图标。这会导致任何问题吗?
答案 0 :(得分:1)
我认为它来自浏览器。
注意:在每次加载页面时从数据库中检索图像数据可能会很慢。
尝试使用数据在文件系统上编写图像文件,并在HTML中链接到此文件。它会更快,更强大。
答案 1 :(得分:0)
基本上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);
}
答案 2 :(得分:-2)
我得到了这个解决方案
<img src='data:image/;base64,_encrypteddata_'/>