我刚刚保存了一张图片(PNG,200x209)
$img = chunk_split(base64_encode(file_get_contents("image.png")));
$sql = "INSERT INTO table (img) VALUES ('$img') WHERE userid = 10";
mysql_query($sql);
(img有MEDIUMBLOB类型)
然后尝试获取它(show.php):
header("Content-type: image/jpeg");
$sql = "SELECT img FROM table WHERE userid = 10 LIMIT 1";
$res = mysql_query($sql);
while ($row = mysql_fetch_assoc($res)) {
$image = base64_decode($row['img']);
}
echo $image;
在请求 show.php 时,它会提供几乎相同的图像,但是具有另一个维度:136x94 =)
为什么会这样?
答案 0 :(得分:1)
我建议您按原样保存图片。 MySQL的 BLOB数据类型专门用于二进制数据。这个图像是一个二进制文件。并删除base64编码。它只会增加数据大小。
在代码中,您正在保存png图像但输出jpeg。两种内容类型都应该相同。
所以插入代码就是这样的,
$img = file_get_contents("image.png");
$sql = "INSERT INTO table (img) VALUES ('$img') WHERE userid = 10";
mysql_query($sql);
并将其显示为
header("Content-type: image/png");
$sql = "SELECT img FROM table WHERE userid = 10 LIMIT 1";
$res = mysql_query($sql);
echo mysql_result($res, 0);