我有以下代码从我的数据库表字段中获取图像。
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�>�v��W
为什么会这样?我该如何修复错误?
答案 0 :(得分: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。
答案 1 :(得分:2)
答案 2 :(得分: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'];
通过这种方式,您可以创建可从您想要的任何地方使用的图像链接(远程站点无需任何数据库访问)。
答案 3 :(得分:1)
假设您正在存储图像的原始二进制文件,您可以这样做:
'image' => base64_encode($result['image']),
然后在html中:
<img src="data:image/png;base64,<?php echo $result['image']; ?>" />
这假设图像是png。如果没有,请相应地更改mime类型。
答案 4 :(得分:0)
如果图像是由此代码存储的
s4�.���N����萗�p�A@4pbr��]�����F�G�>�v��W
因为您只是从数据库中复制并粘贴此代码。 确保它存储图像的名称/ ID和图像的路径,并通过其路径和ID /名称获取图像,或遵循Prasanth对您说的内容。 这是我的帮助你 How to retrieve images from MySQL database and display in an html tag