1

我有以下代码用于从我的数据库表字段中获取图像。

public function getStudentses() {
    $students_data = array();       

    $query = $this->db->query(
        "SELECT * FROM " . DB_PREFIX . "students 
        WHERE customer_id = '" . (int)$this->customer->getId() . "'");   

    foreach ($query->rows as $result) {             
        $students_data[$result['students_id']] = array(
            'students_id'        => $result['students_id'],
            'firstname'          => $result['firstname'],
            'filename'           => $result['filename'],
            'image'              => $result['image'],
        );
    }       
    return $students_data;
}

这是我用于显示图像的 HTML 代码:

<img src="<?php echo $result['image']; ?>" />

但是当我渲染我的页面时,图像无法正确显示,就像一些符号一样

s4�.���N����萗�p�A@4pbr��]�����F�G�&gt;�v��W

为什么会这样?如何修复我的错误?

4

5 回答 5

4

现代浏览器支持使用原始图像数据作为源。

您可以尝试使用类似的东西:

<img src="data:image/png;<?php echo $result['image']; ?>" />

您应该使用base64对图像进行编码,然后输出如下内容:

<img src="data:image/png;base64,<?php echo base64_encode($result['image']); ?>" />

例如,我有使用image/png。如果你的图像是别的东西,你应该使用相应的 encType。

请务必阅读thisthis

于 2012-11-20T09:09:36.590 回答
2

最常见的做法(我所见)是构建 html:

<img src="image.png.php?student_id=<?php echo $result['students_id']; ?>" />

然后image.png.php

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "students "
            "WHERE students_id = '" .(int)$request->getRequestParam('sudent_id') . "'"); 

// And now display raw content as image
$student = reset( $query->rows);
if( !$student){
   header('HTTP/1.0 404 Not Found');
   die( 'Blah blah... Blah blah blah');
}

header( 'Content-Type: image/jpeg');
echo $student['image'];

通过这种方式,您将能够从您想要的任何位置创建指向可用图像的链接(无需远程站点上的任何数据库访问)。

于 2012-11-20T09:17:25.967 回答
2

您很可能需要将标题更改为图像

http://php.net/manual/en/function.header.php

header('Content-Type: image/jpeg');
于 2012-11-20T09:09:07.513 回答
1

假设您正在存储图像的原始二进制文件,您可以这样做:

'image'              => base64_encode($result['image']),

然后在html中:

<img src="data:image/png;base64,<?php echo $result['image']; ?>" />

这假设图像是png。如果没有,请相应地更改 mime 类型。

于 2012-11-20T09:10:58.027 回答
0

如果图像是由此代码存储的

  s4�.���N����萗�p�A@4pbr��]�����F�G�&gt;�v��W

这是因为您只是从数据库中复制和粘贴此代码。确保它存储图像的名称/id 和图像的路径,并通过其路径和 id/名称获取图像,或者按照 Prasanth 对您说的内容。这是我的帮助 如何从 MySQL 数据库中检索图像并显示在 html 标记中

于 2012-11-20T09:18:49.370 回答