2010-07-23 149 views
1

我使用simple image manager class,並將下面的代碼:PHP圖像大小調整不起作用。是否有文件大小限制?

<?php 
include('SimpleImage.php'); 
$image = new SimpleImage(); 
$image->load($target_path); 
if($image->getWidth() > 500) { 
    $image->resizeToWidth(500); 
    echo "<p>Image Resized</p>"; 
} else echo "<p>Image did not need to be resized.</p>"; 
$image->save($target_path); 
echo "<p>Image Saved</p>"; 
?> 

當我上傳的圖像爲700的寬度的圖像被調整大小成功,但是當我上傳一個非常大的圖象(寬度〜= 2300 ),它不起作用,並且我沒有看到我的任何echo消息。

做某些PHP圖像函數有一個大小限制,可能會導致此?

+0

你有錯誤報告嗎?將錯誤報告設置爲'E_ALL | E_STRICT'在開發過程中使用'error_reporting()'查看所有錯誤和警告。 – 2010-07-23 15:29:12

回答

6

您很可能會碰到在php.ini中指定的memory_limit設置。

error_reporting(E_ALL);添加到腳本中,看看輸出是什麼。使用phpinfo()找出當前的內存限制設置。

它有時可以使用ini_set("memory_limit", xyz)進行更改。否則,你需要改變php.ini。

甲2300 X 2300像素的圖像將要佔用至少

2300 x 2300 x 3 = 15,870,000 

=大致的RAM 16兆字節(或2300 X 2300×4,如果有一個alpha通道),所以我說你將每個腳本至少需要24 MB RAM才能使其正常工作。也許更多。

1

有一個上傳文件的大小限制;你可以在你的php.ini中設置它:

upload_max_filesize 
post_max_size 
+0

沒有文件大小限制。有一個上傳大小的限制,但沒有一個處理文件(我經常處理1GB +文件)... – ircmaxell 2010-07-23 15:28:03

+0

親愛的ircmaxell,你可以看到,如果你閱讀與注意問題「圖像成功調整大小,當我上傳一個寬度爲700的圖像「表示存在上傳過程。那麼問題可以從這個問題的上傳部分。 – 2010-07-23 15:30:21

+0

當然可以,但他問img *函數的大小限制。我讀了你的回覆(原來的回答)來回答這個問題(而不是試圖解決問題)......編輯你的答案,說上傳文件大小的限制,我很樂意刪除downvote。 – ircmaxell 2010-07-23 15:43:04

1

檢查你的錯誤日誌。有可能您超出了內存限制(ini設置中的memory_limit)。嘗試將ini_set('memory_limit', '32M');添加到文件的頂部。

並直接回答你的問題,沒有沒有大小限制的內部功能...

+0

只有在php.ini中沒有「M」樣式值嗎?不過,我可能是錯的,現在我還記不清楚。 – 2010-07-23 15:30:02

+0

他們也在'ini_set'中工作......至少在我用過的版本中(win32和linux都是5.2,win32和linux都是5.3)... – ircmaxell 2010-07-23 15:31:02

+0

啊好的,然後我就誤解了。然後是'.htaccess'文件,它不能解析'php_admin_value memory_limit 32M',但需要一個完整的「32000000」 – 2010-07-23 15:32:15