Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用php显示图像_Php_Mysql - Fatal编程技术网

用php显示图像

用php显示图像,php,mysql,Php,Mysql,目前,我正在尝试显示我创建的数据库中的图像,使用phpmyadmin测试我的脚本。数据库包含png和jpg格式的图像。但是输出只是无意义的字符,因为浏览器无法渲染图像。有人能告诉我哪里出错了吗 我用谷歌搜索这个问题,我可以看到他们的模式和我的相似,所以我并不真正理解我错在哪里。我可以在数据库中获取图像的名称,但不能获取图像 这是我的剧本: <html> <head></head> <body> <?php $con = mysqli_con

目前,我正在尝试显示我创建的数据库中的图像,使用phpmyadmin测试我的脚本。数据库包含png和jpg格式的图像。但是输出只是无意义的字符,因为浏览器无法渲染图像。有人能告诉我哪里出错了吗

我用谷歌搜索这个问题,我可以看到他们的模式和我的相似,所以我并不真正理解我错在哪里。我可以在数据库中获取图像的名称,但不能获取图像

这是我的剧本:

<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

您需要在数据库中存储image
MIME类型
,然后您可以这样显示图像:

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:)你的回答是可以的,但是不要发布整个代码,只要尝试修复提问者的错误。你的回答是可以的,但是不要发布整个代码,只要尝试修复提问者的错误。