显示具有不同扩展名的图像(PHP)

显示具有不同扩展名的图像(PHP),php,image,mysqli,Php,Image,Mysqli,下面是我当前用于显示数据库中图像的编码: $con = mysqli_connect('localhost','root','','demo') or die('Unable To connect'); $query = mysqli_query($con,"SELECT * FROM images"); while($row=mysqli_fetch_assoc($query)) { echo '<img src="data:image/png;base64,' . base64

下面是我当前用于显示数据库中图像的编码:

$con = mysqli_connect('localhost','root','','demo') or die('Unable To connect');
$query = mysqli_query($con,"SELECT * FROM images");
while($row=mysqli_fetch_assoc($query))
{
    echo '<img src="data:image/png;base64,' . base64_encode($row['image']) . '" />';
}
$con=mysqli_connect('localhost','root','demo')或die('cannot connect');
$query=mysqli_query($con,“从图像中选择*);
while($row=mysqli\u fetch\u assoc($query))
{
回声';
}
编码问题:它只显示扩展名为.png的图像,因为我使用的是
echo'以显示它。

我想做的:我想显示扩展名为
.jpeg
.png
.gif
的图像


有没有人能帮我用其他简单的方式显示图像?谢谢。

将格式也存储在数据库中:

$con = mysqli_connect('localhost','root','','demo') or die('Unable To connect');
$query = mysqli_query($con,"SELECT * FROM images");
while($row=mysqli_fetch_assoc($query))
{
    echo '<img src="data:image/' . $row['format'] . ';base64,' . base64_encode($row['image']) . '" />';
}
$con=mysqli_connect('localhost','root','demo')或die('cannot connect');
$query=mysqli_query($con,“从图像中选择*);
while($row=mysqli\u fetch\u assoc($query))
{
回声';
}

将格式也存储在数据库中:

$con = mysqli_connect('localhost','root','','demo') or die('Unable To connect');
$query = mysqli_query($con,"SELECT * FROM images");
while($row=mysqli_fetch_assoc($query))
{
    echo '<img src="data:image/' . $row['format'] . ';base64,' . base64_encode($row['image']) . '" />';
}
$con=mysqli_connect('localhost','root','demo')或die('cannot connect');
$query=mysqli_query($con,“从图像中选择*);
while($row=mysqli\u fetch\u assoc($query))
{
回声';
}

Hi只需获取
图像
扩展名
并使用它

$ext = pathinfo($row['image'], PATHINFO_EXTENSION);
echo '<img src="data:image/' . $ext . ';base64,' . base64_encode($row['image']) . '" />';
$ext=pathinfo($row['image'],pathinfo\u扩展名);
回声';

Hi只需获取
图像
扩展名
并使用它

$ext = pathinfo($row['image'], PATHINFO_EXTENSION);
echo '<img src="data:image/' . $ext . ';base64,' . base64_encode($row['image']) . '" />';
$ext=pathinfo($row['image'],pathinfo\u扩展名);
回声';

@FrankerZ已经给出了正确的解决方案,但如果您已经在数据库中存储了base64图像,那么添加格式列将有问题

您可以从base64中发现图像的mime类型,如下所示

$img = $row['image']; // base64 of your image 
$fileInfo = finfo_open(); // file info resource 
$mimeType = finfo_buffer($fileInfo, $img, FILEINFO_MIME_TYPE);
如果您已有记录,请不要在每次迭代中应用此方法。只需将新列添加到数据库中,并使用此方法填充/更新这些新列。之后,使用@FrankerZ的解决方案


@FrankerZ已经给出了正确的解决方案,但如果您已经在数据库中存储了base64图像,那么添加format列将是一个问题

您可以从base64中发现图像的mime类型,如下所示

$img = $row['image']; // base64 of your image 
$fileInfo = finfo_open(); // file info resource 
$mimeType = finfo_buffer($fileInfo, $img, FILEINFO_MIME_TYPE);
如果您已有记录,请不要在每次迭代中应用此方法。只需将新列添加到数据库中,并使用此方法填充/更新这些新列。之后,使用@FrankerZ的解决方案


正确+10。好的,正确+10。好的警告必须读取循环中的每个映像(尤其是大量映像),可能会导致不必要的磁盘IO/CPU周期。必须读取循环中的每个映像(尤其是大量映像),可能会导致不必要的磁盘IO/CPU周期。我在帖子中添加了新的警告。请考虑一下,我给我的帖子增加了新的警告。请考虑一下。