Хранить изображение в базе данных напрямую или как данные base64?

Обычный метод хранения изображений в базе данных заключается в преобразовании изображения в данные 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?

ОБНОВЛЕНИЕ: Существует много споров о преимуществах и недостатках хранения изображений в базах данных, и большинство людей считают, что это непрактичный подход. В любом случае, здесь я предполагаю, что мы сохраняем изображение в базе данных и обсуждаем лучший способ сделать это.

53
задан PdC 13 April 2017 в 13:00
поделиться