Обычный способ хранения изображений в базе данных состоит в том, чтобы преобразовать изображение в base64
данных перед сохранением данных. Этот процесс увеличит размер на 33%. В качестве альтернативы можно непосредственно сохранить изображение как BLOB
; например:Хранение изображения в базе данных напрямую или как данные base64?
$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 места для хранения. Почему в хранилищах MySQL хранятся изображения как base64
?
ОБНОВЛЕНИЕ: Существует много дискуссий о преимуществах и недостатках хранения изображений в базах данных, и большинство людей считают, что это не практический подход. В любом случае, здесь я предполагаю, что мы храним изображение в базе данных и обсуждаем лучший способ сделать это.
Сохраните данные в файл и сохраните только местоположение файла или URL-адрес в базе данных – Fredrik
@Fredrik Если вы решили хранить данные в файле, почему в качестве данных base64? Мы можем просто сохранить исходный файл изображения. – Googlebot
Я решил, что вы отправляете его с устройства, такого как iPhone или что-то еще. Затем вы не хотите отправлять необработанные данные, а base64 в JSON или что-то вместо этого. – Fredrik