0

我有这个从数据库返回图片的 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; 
    }


    ?>
4

2 回答 2

3

您不能使用 php.ini 来“显示”图像。您可以使用<img>标签对 HTML 执行此操作。你所做的是打印原始图像数据,然后告诉浏览器这是一张图片。我不确定如果你这样做并打印多张图像会发生什么,但这取决于浏览器它应该如何处理这个问题。

例如,如果您将它们作为 blob 存储在数据库中,则有时会使用一张图像完成此操作。但不是为了展示它们。

如果要合并图像,可以使用 PHP 中的 GD 库来完成。

于 2012-07-28T22:44:23.180 回答
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")。

于 2012-07-28T22:52:31.320 回答