【发布时间】:2012-04-01 03:08:03
【问题描述】:
在数据库中存储图像的常用方法是在存储数据之前将图像转换为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 的存储空间。为什么在 MySQL 数据库中将图像存储为 base64 更为常见?
更新:关于将图像存储在数据库中的优缺点存在很多争论,大多数人认为这不是一种实用的方法。无论如何,在这里我假设我们将图像存储在数据库中,并讨论这样做的最佳方法。
【问题讨论】:
-
将数据保存到文件中,只在数据库中存储文件位置或url
-
@Fredrik 如果决定将数据存储到文件中,为什么要使用 base64 数据?我们可以简单地保存原始图像文件。
-
我认为您是从 iPhone 或其他设备发送的。然后你不想发送原始数据,而是用 JSON 或其他东西发送 base64 字符串。
-
问任何人,永远不要将这类数据直接存储在数据库中。常识。
-
@Fredrik 不,我说的是一个网站。即使在这种情况下,最好将base64数据转换为图像BLOB并通过ImageMagick保存为普通图像文件。
标签: mysql database image imagemagick base64