【发布时间】:2019-11-08 00:14:29
【问题描述】:
我将图像转换为二进制,并以 BLOB 格式保存在 Mysql 数据库中。 现在,我正在尝试显示所有不同 MIME 类型的图像。 我用不同的建议(stackoverflow)尝试了很多次,也搜索了其他网站。但是,仍然无法显示图像。
为此,我使用了带有 Core PHP (PHP 7.1) 和 MySql 5.6 作为数据库的 LAMP 服务器。 将图像转换为二进制:
function data_uri($file, $mime)
{
$contents = file_get_contents($file);
$base64 = base64_encode($contents);
return ('data:' . $mime . ';base64,' . $base64);
}
将此二进制文件存储在数据库中:
$filename=array("file.jpg","file 22.png","file 11.png","file 1.jpg");
foreach ($filename as $value) {
$pos = strrpos($value, '.');
$extensions= substr($value, $pos+1);
if($extensions=='jpg'){
$ext='image/jpg';
$imageData= data_uri('./downloads/'.$value,$ext);
}
if($extensions=='png'){
$ext='image/png';
$imageData= data_uri('./downloads/'.$value,$ext);
}
$sql1="INSERT INTO image(name,binary_image,extension)
VALUES('".$value."','".$imageData."','".$ext."') ";
$rt=$conn->query($sql1);
}
在屏幕上显示图像中访问数据库中的数据:
$sql="SELECT * FROM image";
$res=$conn->query($sql);
if($res->num_rows >0){
while($row=$res->fetch_assoc()){
$filenam= $row['name'];
$binaryData= explode(',',$row['binary_image']);
$extens= $row['extension'];
//echo '<img src="data:image/jpeg;base64,'.$binaryData[1].'" alt="photo">
<br>';
?>
<img src="<?=$binaryData[0].','. $binaryData[1] ?>" />
<?php }
}
带有二进制数据的损坏图像
【问题讨论】:
标签: php mysql image binary blob