用php显示图像
目前,我正在尝试显示我创建的数据库中的图像,使用phpmyadmin测试我的脚本。数据库包含png和jpg格式的图像。但是输出只是无意义的字符,因为浏览器无法渲染图像。有人能告诉我哪里出错了吗 我用谷歌搜索这个问题,我可以看到他们的模式和我的相似,所以我并不真正理解我错在哪里。我可以在数据库中获取图像的名称,但不能获取图像 这是我的剧本:用php显示图像,php,mysql,Php,Mysql,目前,我正在尝试显示我创建的数据库中的图像,使用phpmyadmin测试我的脚本。数据库包含png和jpg格式的图像。但是输出只是无意义的字符,因为浏览器无法渲染图像。有人能告诉我哪里出错了吗 我用谷歌搜索这个问题,我可以看到他们的模式和我的相似,所以我并不真正理解我错在哪里。我可以在数据库中获取图像的名称,但不能获取图像 这是我的剧本: <html> <head></head> <body> <?php $con = mysqli_con
<html>
<head></head>
<body>
<?php
$con = mysqli_connect("localhost", "Dave", "password");
if (!$con){
die ("Could not connect to database: " . mysqli_connect_error());
}
mysqli_select_db($con, "snippet");
$res = mysqli_query($con, "select * from image");
echo "<table>";
while ($row = mysqli_fetch_array($res)){
echo "<tr>";
echo "<td>"; ?> <img src="<?php echo $row["image"]; ?>" height="100" width="100"> <?php echo "</td>";
echo "<td>"; echo $row["image_name"]; echo "</td>";
echo "</tr>";
}
echo "</table>";
?>
</body>
</html>
“height=“100”width=“100”>
您需要在数据库中存储图像MIME类型
,然后您可以这样显示图像:
echo $row["image"];
header("Content-Type: ".$row['mime_type']);
例如,
PNG
的MIME类型
是image/PNG
;您需要在数据库中存储imageMIME类型
,然后您可以这样显示图像:
echo $row["image"];
header("Content-Type: ".$row['mime_type']);
例如,PNG
的MIME类型是image/PNG
;,其中:
<img src="<?php echo $row["image"]; ?>
您正在设置图像的源。这应该是一个URL或来自服务器根目录的路径。我通常做的是在数据库中保存文件位置和名称(例如“/images/imagename.png”)
如果在数据库中使用MIME类型或BLOB,则此代码将不起作用。使用此代码:
<img src="<?php echo $row["image"]; ?>
您正在设置图像的源。这应该是一个URL或来自服务器根目录的路径。我通常做的是在数据库中保存文件位置和名称(例如“/images/imagename.png”)
如果在数据库中使用MIME类型或BLOB,则此代码将不起作用。是否尝试过此操作
$base64 = 'data:image/PNG;base64,' . base64_encode($row['image']);
echo "<img src=$base64 />" ;
$base64='data:image/PNG;base64'.base64_encode($row['image']);
回声“;
在你的代码中
while ($row = mysqli_fetch_array($res)){
echo "<tr>";
echo "<td>"; ?> <img src="<?php echo data:image/PNG;base64,'. base64_encode($row["image"]); ?>" height="100" width="100"> <?php echo "</td>";
echo "<td>"; echo $row["image_name"]; echo "</td>";
echo "</tr>";
while($row=mysqli\u fetch\u数组($res)){
回声“;
echo“”;?>“height=“100”width=“100”>您试过这个吗
$base64 = 'data:image/PNG;base64,' . base64_encode($row['image']);
echo "<img src=$base64 />" ;
$base64='data:image/PNG;base64'.base64_encode($row['image']);
回声“;
在你的代码中
while ($row = mysqli_fetch_array($res)){
echo "<tr>";
echo "<td>"; ?> <img src="<?php echo data:image/PNG;base64,'. base64_encode($row["image"]); ?>" height="100" width="100"> <?php echo "</td>";
echo "<td>"; echo $row["image_name"]; echo "</td>";
echo "</tr>";
while($row=mysqli\u fetch\u数组($res)){
回声“;
回声“;?>”height=“100”width=“100”>
“height=“100”width=“100”>
“height=“100”width=“100”>
您的图像存储为什么格式?
原始字节?
Base-64?
还是URL
如果它是一个URL,那么只需使用HTMLIMG元素的属性'src'
如果是Base-64,则使用
<img src="data:image/jpg;base64,THE BASE 64 code here" />
或者,您可以在src属性中调用自定义url,该url将生成一个PHP脚本,在该脚本中,您可以通过发送一个自定义标头,后跟字节,动态创建一个图像:
<?php
header('Content-type: image/jpeg');
header('Content-Length: '.strlen($data));
echo $data;
?>
基于Base-64的方法的缺点是数据比原始二进制段占用更多的空间,因为编码是使用64个不同的符号而不是256个符号来完成的。图像存储为什么格式?
原始字节?
Base-64?
还是URL
如果它是一个URL,那么只需使用HTMLIMG元素的属性'src'
如果是Base-64,则使用
<img src="data:image/jpg;base64,THE BASE 64 code here" />
或者,您可以在src属性中调用自定义url,该url将生成一个PHP脚本,在该脚本中,您可以通过发送一个自定义标头,后跟字节,动态创建一个图像:
<?php
header('Content-type: image/jpeg');
header('Content-Length: '.strlen($data));
echo $data;
?>
基于Base-64的方法的缺点是数据比原始二进制段占用更多的空间,因为编码是使用64个不同的符号而不是256个符号完成的。什么是$row[“image”]包含…?URL或其他…?检查您的文件夹结构..我认为您的代码仅从数据库获取图像名称。您应该附加图像文件夹名称。例如:image path:/images/123.jpg然后您应该这样编写代码“height=“100”width=“100”>不要将图像存储在数据库中。这太疯狂了。如果你担心图像上传的复杂性,那么安装php_exif
和libgd
就很简单了。看看一个只需几行代码就能完成相当安全的图像上传的类。这并不疯狂。它只是比alterna不常见/受欢迎动态。@Orion:da vang anh:)$row[“image”]包含什么…?URL或其他什么…?检查您的文件夹结构。我认为您的代码只从数据库获取图像名称。您应该附加图像文件夹名称。例如:image path:/images/123.jpg然后您应该像这样编写代码“height=”100“width=”100">不要将图像存储在数据库中。这太疯狂了。如果你担心图像上传的复杂性,那么安装php_exif
和libgd
就很简单了。看看一个只需几行代码就能完成相当安全的图像上传的类。这并不疯狂。它只是比alterna不常见/受欢迎@Orion:da vang anh:)你的回答是可以的,但是不要发布整个代码,只要尝试修复提问者的错误。你的回答是可以的,但是不要发布整个代码,只要尝试修复提问者的错误。