【问题标题】:Displaying Blob image from database [duplicate]显示数据库中的 Blob 图像 [重复]
【发布时间】:2013-12-16 16:26:41
【问题描述】:

我正在处理一个涉及检索图像的项目,我的代码没有错误,但图像显示为图像图标。只显示一张图片。

$query = "SELECT * from cbir";
$result =mysql_query($query) or die('Error, query failed');

while($row = mysql_fetch_array($result)){
if (abs($red_count - $row['red_count'])> 50 && abs($blue_count - $row['blue_count'])> 50 && abs($green_count - $row['green_count'])> 50 ){
    header("content-type: image/jpeg");
    echo $row['image'];
}
}

【问题讨论】:

  • 所提供的信息无法回答 - 抱歉。
  • http 响应通常只包含一个项目。一些html,或图像,或pdf,等等。您正在循环中获取/输出。您的 header() 调用将在第一张输出图像后失败,并且在显示第一张图像的数据后,其余数据将被视为随机垃圾。
  • 我无法添加结果图像,因为我需要至少 10 个声望。

标签: php image blob


【解决方案1】:

试试这个

 $image = base64_decode($thumb);

        /** check if the image is db */
        if($image!=null)
        {

            $db_img = imagecreatefromstring($image);
            Header("Content-type: image/jpeg");
            imagejpeg($db_img);

        }
exit;

【讨论】:

  • 您假设 OP 存储了 base64 编码的图像。对于 blob,b64 编码是一种可怕的空间浪费,因为它将所有内容都炸毁了大约 33%
  • 我假设图像存储在 blob 中
  • 是的,blob 用于二进制存储。不需要对 blob 进行 b-64 编码。
  • 它对我有用。谢谢我以后会记住
【解决方案2】:

您需要创建一个 PHP 脚本,该脚本将根据其唯一 ID 获取图像,为了这个答案,我们将其称为 imageId,并假设这是一个名为 image.php 的 PHP 文件。这看起来像:

$query = "SELECT * from cbir WHERE imageId = ".mysql_real_escape_string($_GET['imageId']);
$result = mysql_query($query) or die('Error, query failed');

while($row = mysql_fetch_array($result)){
    header("content-type: image/jpeg");
    echo $row['image'];
}

然后您需要在显示脚本中执行以下操作。

$query = "SELECT * from cbir";
$result = mysql_query($query) or die('Error, query failed');

while($row = mysql_fetch_array($result)){
    if (abs($red_count - $row['red_count'])> 50 && abs($blue_count - $row['blue_count'])> 50 && abs($green_count - $row['green_count'])> 50 ){
        echo '<img src="image.php?imageId='.$row['imageId'].'" />';
    }
}

我还可以指出,您实际上不应该再使用 mysql 功能,您至少应该使用mysqli,但最好使用PDO

【讨论】:

  • 我想检索相似的图像。用户将上传一张图像,并提取 r、g 和 b 的计数,以将其与数据库中存储的每张图像的 r、g 和 b 进行比较。将显示差异最小的图像。我无法使用 id 进行比较。
  • 对不起,那是我的错。现在编辑以使用您的原始查询来获取图像 ID。我的复制粘贴错误。 select * 查询将返回所有图像以进行 rgb 比较,但只需确保每个图像都有一个唯一的图像 ID,image.php 可以使用它来加载单个图像作为图像标签上 src 属性的一部分。
猜你喜欢
  • 2018-11-26
  • 2013-04-08
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
  • 2016-03-14
  • 2012-04-21
  • 2013-01-23
  • 2012-02-03
相关资源
最近更新 更多