Обычный метод хранения изображений в базе данных заключается в преобразовании изображения в данные base64
перед сохранением данных. Этот процесс увеличит размер на 33%. В качестве альтернативы можно напрямую сохранить изображение как BLOB
; например:
$image = new Imagick("image.jpg");
$data = $image->getImageBlob();
$data = $mysqli->real_escape_string($data);
$mysqli->query("INSERT INTO images (data) VALUES ('$data')");
, а затем отобразить изображение с помощью
<img src="data:image/jpeg;base64,' . base64_encode($data) . '" />
. С помощью последнего метода мы экономим 1/3 места для хранения. Почему изображения чаще всего хранятся как base64
в базах данных MySQL?
ОБНОВЛЕНИЕ: Существует много споров о преимуществах и недостатках хранения изображений в базах данных, и большинство людей считают, что это непрактичный подход. В любом случае, здесь я предполагаю, что мы сохраняем изображение в базе данных и обсуждаем лучший способ сделать это.