0

我刚刚保存了一张图片(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 =)

为什么会这样?

4

1 回答 1

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);
于 2012-12-05T15:44:11.123 回答