2013-04-21 48 views
0

我想在下面的代碼中列出(也是重新大小)的照片。所以我想用「x」id輸出所有圖像。如何輸出圖像數組?

問題是我有一個標題,我已經包含在文檔中,所以我不能使用header('Content-type: image/jpeg');來輸出我想要顯示的圖像數組。但是如果我把它拿出來,它只會顯示一堆隨機字符,我知道它是一個字符串中的照片。我不知道如何使這項工作。我打算讓每張照片都有自己的div。

<!DOCTYPE html> 
    <html lang="en"> 
     <head> 
      <meta charset="utf-8" /> 
      <?php include 'topheader.php'; ?> 
     </head> 

     <body> 
      <?php 
       ob_start(); 
       ini_set("gd.jpeg_ignore_warning", 1); 
       $roomid = $_GET['room']; 
       $query = "SELECT `photoname` FROM `roomsite`.`photos` WHERE `roomid`='$roomid'"; 
       $getphotos = $connect->prepare($query); 
       if ($getphotos->execute()){ 
        while ($array = $getphotos->fetch(PDO::FETCH_ASSOC)){ 

         $image = imagecreatefromjpeg('userphotos/'.$array['photoname'].''); 


         list($image_width, $image_height, $type, $attr) = getimagesize('userphotos/'.$array['photoname'].''); 

         $new_size = ($image_width + $image_height)/($image_width*($image_height/100)); 
         $new_width = $image_width * $new_size; 
         $new_height = $image_height * $new_size; 

         $new_image = imagecreatetruecolor($new_width, $new_height); 
         imagecopyresized($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $image_width, $image_height); 
         $imagearray = imagejpeg($new_image, null); 

         header('Content-type: image/jpeg'); 
         echo $imagearray; 


        } 
       } else { die('Query Error'); } 
      ?> 
     </body> 


    </html> 

我可以做這樣的事情

while ($array = $getphotos->fetch(PDO::FETCH_ASSOC)){ 
    echo '<img src="outputphotos.php">'; 
} 

但是那意味着我將兩次運行查詢這可能不是一個好主意?這是唯一的方法嗎?

+0

爲什麼你甚至需要使用圖像功能呢?你已經有了圖像文件,爲什麼不鏈接到它並使用'width'和'height'屬性讓瀏覽器爲你調整大小?如果存在大小差異,則應考慮將服務器上的圖像保存爲不同的大小。 – animuson 2013-04-21 18:51:33

+0

@animuson嗯,我需要保持圖像的比例與我用來調整圖像大小的代碼相同。我可以只是做:'而($陣列= $ getphotos->取(PDO :: FETCH_ASSOC)){\t \t \t \t \t 回聲 ''; '但是我需要調整圖像大小和相同的比例。 – user2127833 2013-04-21 19:14:27

回答

2

HTTP協議處理單個問題的答案。 HTML的工作方式是它描述單個HTML文檔中的結構和內容,並允許通過引用來加載輔助資源。這樣做的正確方法是在您的HTML中爲需要顯示的圖片生成img標籤,還允許您設置樣式等。在引用的網址中,您可以爲特定圖像獲取參數。

僞代碼:

while($row = $myQuery->nextRow()) 
    echo '<img src="/showimage.php?id='.$row->getId(). 
     ' alt="'.htmlentities($row->getName()).'">'; 

由於圖像是通過定義你不能以任何方式發送,並將其作爲參考文件同樣要求獨立的文件。

+0

在技術上*可以將圖像直接嵌入到HTML中,但它確實是一個非常糟糕的主意。 – animuson 2013-04-21 18:54:39

+0

好的數據網址是可能的,但我儘量不給真正的*真正的*壞的想法,真正的*真正的*基本問題;) – 2013-04-21 18:58:34

0

如果你真的要需要動態調整圖片大小,你可以爲它編寫一個單獨的腳本。喜歡的東西:

http://yourdomain.com/DynamicImage.php?image=foo.png&maxwidth=100&maxheight=100 

然後將所有的IMG標籤存在的:

<img src="http://yourdomain.com/DynamicImage.php?image=originalImageName.jpg&maxwidth=100&maxheight=100" /> 

你可以教腳本緩存所產生的縮放後的圖像,並直接服務於他們在將來的請求。