2014-01-29 37 views
2

在調整圖像大小的過程中,我收到PHP的錯誤「內存不足」。我可以通過在我的php.ini中設置一個更大的值來解決這個問題,但是如果我無法通過webhosting安全策略修改我的php.ini(並且我無法使用PHP設置此值運行時),會發生什麼情況?我如何知道圖像是否會導致php memory_limit錯誤?

我使用普通帖子上傳圖片$_Files,我的memory_limit是32 MB。如何在調整大小的過程中計算圖像是否會導致此錯誤?上傳的照片可能有不同的格式和重量;我正在嘗試調整爲820px的唯一寬度。

編輯

我發現這個網站http://www.dotsamazing.com/en/labs/phpmemorylimit 也許我必須重複此計算,但它似乎很難做到。

+0

如果你不能改變php.ini或更改memory_limit,那麼你幾乎塞滿了,你應該尋找一個更靈活的託管服務提供商。不要指望普通的互聯網用戶在上傳照片之前就知道如何調整照片大小。 –

+0

你應該做的是調整瀏覽器中的圖像大小(使用JS),然後將小圖像上傳到PHP腳本。這樣,如果有人得到了內存不足的錯誤,那很可能是瀏覽器。 – Kayla

+0

你用什麼來調整圖像大小?你在php中使用gd函數嗎? – troseman

回答

2

看起來您希望在嘗試調整圖像大小之前獲取圖像大小。

例如一旦你的服務器上的文件臨時路徑,將它傳遞給函數:

$image_size = getimagesize('/path/to/image'); 

這將爲您提供將許多有關圖像,包括它的大小信息的。

一旦你有t這,然後減去你的memory_limit的,你可以得到與價值:

$my_memory_limit = ini_get('memory_limit'); 

所以可用內存變得

$memory_available = $my_memory_limit - $size; 

在這一點上,你可以做出決定你是否有內存來調整它的大小(取決於你的重新設置過程的內存成本如何,或者如果你把它踢回給用戶,並告訴他們使用更小的圖像

+0

謝謝你的答案,但我想知道是否有可能知道調整圖像所需的內存。調整大小所需的內存大於圖像大小佔用的內存。 – user31929

+0

啊我看到了,這將取決於確切的代碼來調整圖像的大小。通常使用像「imagecreatefromjpeg」這樣的函數......這需要非常瞭解您的調整大小代碼是如何工作的。但是,最糟糕的情況應該是圖像大小乘以2(這會將圖像調整爲與其大小相同) – Danoweb

相關問題