我有这个PHP脚本,可以从数据库中返回图片。我现在使用循环一次返回5张图片,但我认为它们都重叠,所以我只看到一张。如何将每张图片移动几个像素,以便我可以看到其他图片?
<?php
$mysqli=mysqli_connect('localhost','root','','draftdb');
if (!$mysqli)
die("Can't connect to MySQL: ".mysqli_connect_error());
$param = isset($_GET['rarity']) ? $_GET['loopcount'] :null;
$stmt = $mysqli->prepare("SELECT display.PICTURE_ID
FROM cards
INNER JOIN display ON cards.DISPLAY_ID = display.DISPLAY_ID
WHERE display.DISPLAY_ID=? AND cards.CARD_TYPE =?" );
$cardtype='Rare';
for ($i=0; $i<=5; $i++)
{
$num[$i] = rand(16,30);
for ($j=0; $j<$i; $j++)
{
while ($num[$j] == $num[$i])
{
$num[$i] = rand(16,30);
}
$displayid= array_shift($num);
}
$stmt->bind_param("si", $displayid, $cardtype);
$stmt->execute();
$stmt->bind_result($image);
$stmt->fetch();
header("Content-Type: image/jpeg");
echo $image;
}
?>
答案 0 :(得分:3)
您无法显示&#34;用php的图像。您可以使用<img>
标记使用HTML执行此操作。你所做的是打印原始图像数据,然后告诉浏览器它是一张图片。我不确定如果你这样做并打印多张图片会发生什么,但是浏览器应该如何处理它。
如果您将它们作为blob存储在数据库中,则有时会使用一个图像完成此操作。但不是出于展示它们的目的。
如果要合并图像,可以使用PHP中的GD库执行此操作。
答案 1 :(得分:2)
您只能使用Content-Type: image/jpeg
将一张图片发送到浏览器。我可以想到两种方式发送多张图片。
1.使用GD制作包含所有其他图片的新照片并发送。
2.发送HTML页面而不是图片:
<?php
//some code which gets the images and puts them in an array - $images
?>
<!DOCTYPE HTML>
<html>
<body>
<?php foreach($images as $image):?>
<img src="data:image/jpeg;base64,<?php echo base64_encode($image);?>"/><br/>
<?php endforeach;?>
</body>
</html>
编辑:浏览器很难快速解析非常大的HTML文档,因此如果您有大量或大量的图像,最好将它们加载到单独的HTTP请求中(src="image.php?image=xxxx"
)。