资讯专栏INFORMATION COLUMN

php 上传图片造成内存溢出 Allowed memory size of ... bytes

CarterLi / 3654人阅读

摘要:场景图片上传,是网站开发常见的需求用户上传图片后端处理图片压缩生成缩略图裁剪加水印等等保存在特定的文件夹中,在这个过程中,有时候上传大图片会出现错误,就是内存溢出的意思。

[场景]

    图片上传,是网站开发常见的需求——用户上传图片=>后端处理图片(压缩、生成缩略图、裁剪、加水印等等...)=>保存在特定的文件夹中,在这个过程中,有时候上传大图片会出现错误“Allowed memory size of xxx bytes”,就是内存溢出的意思。

[原因]

    google了一下,主要的答案都是——可用内存太少了,通过修改php.ini的相关参数来减少内存的限制。https://stackoverflow.com/all...,虽然这是一种解决方案,但是默认的设置少说都有64M,再大的图片也不会这么大吧。所以,找到了另外的一个观点(传送门)

    ——php处理图片时(如使用php的gd库的函数,例如imagecreatetruecolor(),),占用内存的大小不是取决于图片的体积大小,而是分辨率。具体公式是:(图片分辨率,图片对象的width和height )X(图片的通道数,一般是3)X 1.7。e.g. 一张照片大小只有3.1M,但是分辨率高达3994X2443,占用内存是 399424433*1.7 = 49762444.2!

[总结]

    这篇文章主要是对内存溢出的错误进行探讨,大家平时进行调用第三方类库图片处理时,指定分辨率可避免不必要的错误,如果大家都什么另外的见解或者补充欢迎在下面留言讨论~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28834.html

相关文章

  • PHP GD库无法压缩高解析度的照片解决方式(Allowed memory size bytes e

    摘要:本教学使用环境介绍伺服器端资料库语言版本本机端在刚刚遇到了这个问题上传普通解析的图片,例如都是可以正常上传也能够使用库对其解压缩只是当我上传了甚至更高的图片时,一样可以普通上传但是却无法上传查看错误表示类似这样的错误讯息只要在后端表头宣告就 本教学使用环境介绍伺服器端:Ubuntu 16.04资料库:Mariadb 10.1.34(Mysql)语言版本:php 7.0本机端:MacOS...

    tracymac7 评论0 收藏0
  • PHP处理高分辨率图片的问题

    摘要:中图片的处理都是使用了库,这个库提供了很多方法让可以更方便地对图片进行操作,支持的图片格式如下回到一开始的问题,那个小伙伴需要处理高分辨的图片,图片大小必然很大,所以就会出现内存不够的情况,解决方法还是有很多的。 今天小伙伴在群里问了这么一个问题: showImg(https://segmentfault.com/img/remote/1460000018494753); showIm...

    thursday 评论0 收藏0
  • MySQL的Buffered and Unbuffered queries

    摘要:的今天我们就进一步的来的查询缓存的高级作用吧,也就是查询缓存和查询非缓存起因内存溢出警告官方主要说缓存查询是一下子把内容都查出来,放到内存里,会越积越多而非缓存查询则直接一条一条从服务器返回,也就是会等待着进程来获取下一条数据。 MySQL的Buffered and Unbuffered queries 今天我们就进一步的来talk talk MySQL的查询缓存的高级作用吧,也就是 ...

    elva 评论0 收藏0
  • 07.Android之多媒体问题

    摘要:加载图的机制是什么,为何不会内存泄漏自定义可拖动的显示高清大图的技术博客大总结提供一个设置图片的入口,里面去获得图片的真实的宽度和高度,以及初始化我们的重写,在里面根据用户移动的手势,去更新显示区域的参数。 目录介绍 7.0.0.1 加载bitmap图片的时候需要注意什么?为何bitmap容易造成OOM?如何计算Bitmap占用内存? 7.0.0.2 如何理解recycle释放内存问...

    eechen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<