我目前有一个数据库,我可以存储图像.. 但我创建的PHP页面显示它们......不起作用。 但当我使用链接作为scr的< IMG>它显示一个空的图像框架。 如果我直接回应图像,我会得到许多奇怪的迹象
我想要显示图像的方式是: < img src =“image.php?image =”'。$ imageID。'/>
我用于显示图像的代码(image.php)是:
<?php session_start();
if(!isset($_GET['image']))
{
header("HTTP/1.0 404 Not Found");
}
else{
$link = mysql_connect('localhost', '45345345435435345', 'wewfsersdfds');
if (!$link) {
echo "error";
die;
}
$db_selected = mysql_select_db(Tha base, $link);
if (!$db_selected) {
echo "error";
die;
}
$nummer=(int)trim(stripslashes($_GET['image']));
$mynr=$nummer;
$sql="SELECT * FROM Foto WHERE fotonr=$mynr";
$result=mysql_query($sql);
if(!$result)
{
echo "error".mysql_error();
header("HTTP/1.0 404 Not Found");
}
else
{
$foto = mysql_fetch_assoc($result);
header("Content-type: ".$foto['type']);
echo $foto['image'];
}
}
?>
我已经尝试了很多但它不会工作:( 我将代码更新到最新版本。 用sql犯错(没有选择/永远不会做一个int的mysql_real_escape_string)
现在它显示的是一行直线而不是图像,这至少是一种改进......
有人可以帮助我吗?
Thanx你的时间!
答案 0 :(得分:2)
我怀疑你的问题出在你的转换中 - 可能是在字符串和图像之间,或者是在不同的图像格式之间。
您是否尝试过保存通过image.php获取的图像,并将二进制文件与已知良好的图像文件进行比较?也许一旦你这样做,答案就会很明显(例如错误的长度,错误的标题等)
您可能需要考虑不同的数据库记录。大多数db支持存储二进制blob数据,您可以更简单地返回。这比使用php函数stringify和imagecreatefromstring更简单(并且在db中占用更少的空间!)。
此外,我相信您正在尝试使用imagegif,imagejpeg,images来为您执行图像格式转换。根据我在http://php.net/manual/en/function.imagecreatefromstring.php上的阅读,这不是我理解它们的工作方式。尝试存储和检索相同的格式,以梳理出这是否是您的问题。
尝试查看内容类型。我认为这是区分大小写的。尝试Content-Type。 http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
答案 1 :(得分:2)
老实说,我知道这可能很棘手。我认为这与你如何存储它有关,而不是如何输出它。我有一个最近可以展示的项目的存储示例。
$fp = fopen($image_path, 'r');
$image = fread($fp, filesize($image_path));
$image = addslashes($image);
fclose($fp);
// save $image into DB.
不确定您是否与file_get_contents类似。我的输出方式类似于你的方式,只使用ORM和框架。
答案 2 :(得分:0)
$sql = "SELECT * FROM Foto WHERE fotonr=$mynr";
$result = $conn -> query($sql);
while ($row = $result -> fetch_assoc()) {
$img= '<img src="data:image/jpeg;base64,'.base64_encode( $row['image'] ).'" width=350px0px height=300px/>';
}
echo $img;