2015-10-15 176 views
1

我試圖通過在保持縱橫比的同時將其尺寸調整爲200 x 200來調整圖像大小。我試圖按照http://php.net/manual/en/function.imagecopyresampled.php來嘗試完成此操作。這裏是我的代碼:使用php調整圖像大小

<?php 
    $directory = "uploads/"; 
    $images = glob($directory."*.jpeg"); 
    foreach($images as $filename) { 

     // Set a maximum height and width 
     $width = 200; 
     $height = 200; 

     // Get new dimensions 
     list($width_orig, $height_orig) = getimagesize($filename); 

     $ratio_orig = $width_orig/$height_orig; 

     if ($width/$height > $ratio_orig) { 
      $width = $height*$ratio_orig; 
     } else { 
      $height = $width/$ratio_orig; 
     } 

     // Resample 
     $image_p = imagecreatetruecolor($width, $height); 
     $image = imagecreatefromjpeg($filename); 
     imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 

     // Output 
     imagejpeg($image_p, null, 100); 
    } 
?> 

我拿出內容類型,因爲它給我一個錯誤。而不是輸出調整大小的圖像,它是這樣輸出一堆符號:

JFIF�����t��jw��E��4."�DN�9>m���4����P};WI��x"�

有人知道爲什麼會發生這種情況嗎?

+1

你以前從哪裏學過'內容類型'? –

+0

您是否嘗試調整大小並保存它們或調整大小併爲它們提供服務?即使您添加了內容類型標題,您仍然嘗試在單個請求中輸出包含多個jpeg圖像的字節流。它不會像你認爲的那樣工作。 –

+0

我刪除它,因爲它一直給我這個錯誤:'警告:不能修改標題信息 - 標題已經發送(輸出開始於/home/sites/aejhyun.com/public_html/Syrian Project/index.php:555)在/ home/sites/aejhyun.com/public_html/Syrian Project/index.php on line 558' –

回答

0

您需要將標題發送到瀏覽器,以便瀏覽器正確理解您的輸出。下面的行添加到您的腳本:

header('Content-Type: image/jpeg'); 
0

您需要的foreach循環之前有header('Content-Type: image/jpeg');

+0

但是,我得到這個錯誤:'警告:不能修改標題信息 - 已經發送的標題(在/ home/sites/aejhyun開始輸出.com/public_html/Syrian Project/index.php:555)in /home/sites/aejhyun.com/public_html/Syrian Project/index.php on line 558' –

+1

那麼這意味着在那裏有一個輸出。這是真正的問題。首先發送所有標題,然後輸出。 – Cosmin

0

此代碼必須在文件的開始:

header('Content-Type: image/jpeg'); 

和上面代碼應該是獨立的,你不應該在任何地方有任何HTML標籤,它不應該在任何地方被「PHP包含」。