2012-02-28 261 views
1

我有一些麻煩功能imagecreatefrompng(),在PHP中。imagecreatefrompng()和大小限制

我開發了一個網站,其目標是允許用戶上傳他們自己的Sprite漫畫(使用從視頻遊戲中提取的資源製作的各種漫畫,稱爲精靈)。

我想在他們的鏡子裏展示他們漫畫的一些縮影,所以我用GD,當然還有imagecreatefrompng()

但它拋出致命誤差放大圖:

致命錯誤:內存(分配8388608)(試圖分配 4545600字節)

發生同樣的錯誤即使通過ini_set()設置「memory_limit」的值之後,也是如此ini_set() ...

經過幾個小時的研究s,這似乎是因爲分辨率:imagecreatefrompng()無法管理超過1024萬像素的圖像......!

這是非常非常不方便,因爲我不能限制由用戶發送漫畫的大小...

你知道什麼祕訣來解決這個問題?

Thnaks提前!

+0

考慮使用Flash作爲處理圖像的方法,會消除一些服務器負載,並且不會有這些限制。只是一個想法,從來沒有做過,不知道它是否可能。 – 2012-02-28 20:48:17

+0

我不喜歡使用Flash的想法,但如果我必須...感謝您的回答:) – KorHosik 2012-03-01 10:30:56

回答

2

你需要問你的主機提供商設置更多的虛擬內存。這是php.ini - memory_limit中的設置,不應該成爲免費的問題。您現在處於最低價值。

+0

這似乎不是因爲「memory_limit」:我的默認值是90Mb,所以我認爲這已經足夠了: /但謝謝你的回答! – KorHosik 2012-03-01 10:29:16

+0

我認爲我是對的。必須知道,每個像素在內存中乘以圖像位深度。 1 000 000像素意味着aprox。圖像1024 x 768像素。 16位深度需要分配最小16 Mb的內存用於基本負載。在調整大小或其他操作的同時使用相同大小的副本。真正需要的圖像操作內存比看起來要高得多。在使用位數計數結果時,仍然使用1,5-2。 – 2012-03-01 21:00:21