解決php 上傳圖片造成內存溢出(Allowed memory size)

圖片上傳,是網站開發常見的需求。通常來講就是用戶上傳圖片啊,完事後臺進行處理。比如什麼壓縮啊,剪裁啊,生成縮略圖啊什麼的。在這個過程中我們有時候會遇到一個很奇怪的錯誤,那就是Allowed memory size。。。等等一串。

    好吧,大家都知道,這是內存溢出了。完事我們修改 php.ini 配置文件中的相關參數來解決,成效很明顯,大部分情況下我們完事了,成功了。但是不知道大家注意沒,它默認的上傳限制不算太小,就按着64M來說吧。我們有時候上傳個三四M的圖片就會造成內存溢出。這是爲什呢???

    拿php的gd庫來說吧,它處理圖片的時候會用到一個函數,imagecreatetruecolor()。網上搜索下,知道了它是用來創建高清和透明圖片的。所以嘞,基本上可以確定造成內存溢出的原因了,那就是圖片的分辨率太高了。

    咱們來看個公式:(圖片分辨率,圖片對象的width和height )X(圖片的通道數,一般是3)X 1.7。

    把一張分辨率高的圖片信息代入公式大家就會有所發現了,我們就會知道,佔用內存的大小不是取決於圖片的體積大小,而是分辨率。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章