Я конвертировал изображения в двоичный файл и сохранял их в формате BLOB в базе данных Mysql.
Теперь я пытаюсь отобразить все изображения разных типов MIME.
Я пробовал много раз с различными предложениями (stackoverflow) и искал по другим сетям также. Но по-прежнему не удается отобразить изображения.
Для этого я использовал сервер LAMP с Core PHP (PHP 7.1) и MySql 5.6 в качестве базы данных.
Чтобы преобразовать изображения в двоичные файлы:
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 }
}
Поврежденные изображения с двоичными данными