2012-07-28 54 views
0

我有這個PHP腳本從數據庫返回圖片。我現在使用一個循環來一次返回5張圖片,但我認爲它們都是重疊的,所以我只看到一張。我怎樣才能將每張照片轉換成幾個像素,以便我可以看到其他照片?用PHP顯示多個圖像

<?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; 
    } 


    ?> 
+1

也許是因爲您發送了標頭? 'header(「Content-Type:image/jpeg」);' – 2012-07-28 22:42:03

+0

可能'$ stmt-> bind_param(「si」,$ displayid,$ cardtype);'是錯的。 – 2012-07-28 22:44:22

回答

3

你不能用php顯示圖像。您可以使用<img>標籤通過HTML來實現。你所做的是打印原始圖像數據,然後告訴瀏覽器這是一張圖片。我不確定如果你這樣做並且打印多個圖像會發生什麼,但是它取決於瀏覽器應該如何處理它。

如果您將它們作爲斑點存儲在數據庫中,有時會使用一個圖像。但不是爲了顯示它們的目的。

如果你想合併圖像,你可以在PHP中使用GD庫。

+0

這是顯示圖片我只是想知道如何,如果我可以顯示多個圖片與循環,並抵消他們的設置數量的像素,所以我可以看到他們所有。 – Undermine2k 2012-07-28 22:47:57

+3

這就是我所告訴你的,不能告訴瀏覽器如何使用PHP來顯示內容。你爲什麼不用HTML來做這件事? – 2012-07-28 22:49:00

+0

你是對的我正在使用PHP,因爲我不認爲你可以在HTML中使用編程邏輯,但我忘了

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")。

+0

另一個常見的解決方案是使用一個PHP文件,該文件發送圖像標題並打印數據(給定圖像標識)。將圖像數據直接打印到文檔imo中相當醜陋,因爲圖像可能非常大。 – 2012-07-28 22:58:36

+0

這是我可以想到的用於顯示多個圖像的最簡單的方法。而且由於瀏覽器並不真正關心你的HTML看起來多漂亮,而且更重要的是,在兩種情況下緩存都是一樣的,所以我看不出爲什麼用n + 1個HTTP請求做更好的原因。 – Vatev 2012-07-28 23:05:42

+0

對於瀏覽器而言,你顯然是對的,而不關心代碼的外觀。雖然我確實相信這至少會以一種方式影響客戶端,但如果您有很多(甚至只有一個)圖像,htmldocument會變得非常大。我只是不認爲htmldocuments應該包含圖像數據,即使它的服務器生成。 – 2012-07-28 23:12:31