检索要查看的BLOB .bin图像

时间:2014-01-23 09:26:17

标签: php mysql blob

我有两个文件;

image.php

<?php
// include db connect class
require_once __DIR__ . '/db_connect.php';

// connecting to db
$db = new DB_CONNECT();


$result = mysql_query("SELECT *FROM products") or die(mysql_error());
//Your code to call database for image id (from _GET['id']), for instance:
$image_id = $_GET['pid'];
$data = mysql_query("Select img where pid = $image_id");

while($data = mysql_fetch_assoc($result)){ 
  $image=$data['img'];
  header("content-type: image/png");
  echo $image;
}
?>

和ay.html查看图片;

<img src="image.php?pid=IMAGE_ID" />

经过我试过的很多例子,以及本网站和其他地方的每个帖子,我仍然收到此错误;

The image"http....../image.php?pid=IMAGE_ID" cannot be displayed because it contains errors.

任何帮助将不胜感激。 顺便说一句,MySql变量是一个名为img的LONGBLOB 我想知道为什么MySQL变量没有简单的IMG类型!

1 个答案:

答案 0 :(得分:0)

您应该发布存储图像的方式,以确切了解代码的错误,但是因为错误表示图像存在某种错误,因此无法正确存储到数据库中。

一般来说,从图像到二进制数据和反向的步骤如下:

图像到二进制转换:

<? php

$image_data=file_get_contents('test.jpg');

$encoded_image=base64_encode($image_data);

echo $encoded_image;

?>

二进制到图像转换:

<?php

$image_data = file_get_contents('test.jpg');

$encoded_image = base64_encode($image_data);

$decoded_image = base64_decode($encoded_image);

echo $decoded_image;

?>

您完全缺少的是base_64编码,以防止符号被错误地转换。