PHP生成图片太慢了。。有些都不出来、

现在为了使用不同宽高的图片,做了个动态生成的程序。每次根据图片传入的宽高来输出图片,然后 html 页面里用

<img src="xxx.com/img?src=c8d997dae152b2bfdfd0a48a6142ec_900_400.jpg" />

这个就是 900X400 的。

用也就是 php 的 GD 库来创建个图层,来根据比例重新画出一个图

imagecreatetruecolor($_n_w,$_n_h);
imagecopyresampled($this->new,$this->img,0,0,$_cut_width,$_cut_height,$new_width,$new_height,$this->width,$this->height);

最后输出图片让 html 引用 这个地址就行了

header("Content-type: image/png");
imagepng($imgsrc);

现在问题是 html 引用了后,好多图片会出现一半,或者不出来了,效率太低了,有什么改进办法没?

默认排序时间排序

10 个回答

答案对人有帮助,有参考价值1答案没帮助,是错误的答案,答非所问

bf 5.2k 2014年12月31日 回答 · 1月4日 更新

樓下那些重複我的答案卻不點讚的幾個意思 ╮( ̄﹏ ̄)╭



首先,放棄 GD,改用 imagick。 \( ̄- ̄)/

其次,緩存。

最簡單的緩存設計:

url 爲 cache/image0001-1024x768.jpg

如果服務器找不到,則交給 PHP 處理,生成的結果保存,下一次就和靜態資源沒甚區別了。 (○′ω`○)

再次,實際使用時完全沒有必要把各種大小都用上,固定用幾個就行了,後端的強大是爲了前端的方便而不是偷懶 ( ̄ˇ ̄)

比如 wikipedia 雖然支持任意縮放,但一般情況顯示的都是幾個固定大小,所以基本上也不會出現重複運算。╮( ̄▽ ̄)╭

答案对人有帮助,有参考价值1答案没帮助,是错误的答案,答非所问

肖大侠 171 1月4日 回答

直接用 CDN 服务商的自动缩略图工具吧,好像 upyun 和 qiniu 都有这种接口的。

不然的话,就使用 ImageMagick 库,比 GD 快不知道多少倍。

答案对人有帮助,有参考价值0答案没帮助,是错误的答案,答非所问

murmur 609 2014年12月31日 回答

这个设计本身就是错误的,比较科学的设计是实现计划好所有的可能,然后选几个分界点,在图片上传的同时,生成比如4-5个尺寸的图片,每次就是纯静态访问了
其余的尺寸就是用浏览器自身的缩放

答案对人有帮助,有参考价值0答案没帮助,是错误的答案,答非所问

hiro0729 71 2014年12月31日 回答

用js控制吧,去github上搜几个库用用就行
https://github.com/search?utf8=%E2%9C%93&q=img+fit

答案对人有帮助,有参考价值0答案没帮助,是错误的答案,答非所问

夜未央 105 1月1日 回答

和一楼观点相反,这不是错误的设计,这种更科学。就如楼上所说至少得加上缓存
另外附上一个图片缩略服务的项目https://github.com/thumbor/thumbor

答案对人有帮助,有参考价值0答案没帮助,是错误的答案,答非所问

不写代码的码农 5.2k 1月4日 回答

用imagick和ImageMagick库吧

答案对人有帮助,有参考价值0答案没帮助,是错误的答案,答非所问

Aries 167 1月4日 回答

1.使用ImageMagick
2.每次生成图片的时候判断这个尺寸的图片是否存在,不存在,再生成。。。然后保存(也就是缓存吧)

答案对人有帮助,有参考价值0答案没帮助,是错误的答案,答非所问

Yourtion 343 1月4日 回答

推荐直接使用CDN商,例如七牛,我自己就是用七牛的,定了一套规则,把资源目录给做成一个子域,然后镜像就解决问题,不需要整各种同步脚本。

答案对人有帮助,有参考价值0答案没帮助,是错误的答案,答非所问

qianfeng 137 1月4日 回答 · 1月4日 更新

有的cdn支持图片缩略图功能,

或者自己 rewrite 判断文件是否存在,不存在php处理完生成到相同路径。

比如: /thumb/12345_100x100.jpg 第一次用PHP处理生成到 /thumb/12345_100x100.jpg,下次文件存在就直接返回了。

答案对人有帮助,有参考价值0答案没帮助,是错误的答案,答非所问

viphackl 20 1月5日 回答

PHP处理图片本来就耗服务器资源如果你一个页面有很多需要这种时时去处理的图片资源服务器能忙过来~~

就楼上所提的一样~~通过PHP程序或rewrite来判断该尺寸的图片是否已经存在,不存在处理。这样可以减轻服务器的压力应该会提升处理的速度吧。~

时间: 2024-11-08 11:32:36

PHP生成图片太慢了。。有些都不出来、的相关文章

《从0到1》笔记 第三章 所有成功的企业都是不同的

第三章 所有成功的企业都是不同的----科技企业的创新就是为了垄断,成功的科技企业都是垄断式的. 在商界,钱就是一切,或至少是非常重要.垄断者除了想着赚钱外还有余力想其它事情,而非垄断者就不行.在完全竞争中,企业着眼于短期利益,不可能对未来进行长期规划.要想企业从每日的生成竞赛中解脱出来,唯一的方法就是:获取垄断利润. 企业成功的原因各有不同:每个垄断企业都是靠解决独一无二的问题而获得垄断地位:而企业失败的原因却相同:它们都无法逃脱竞争. 国内的垄断者,如百度,解决了中文搜索的问题,垄断了搜索的

衙度点燃咗报时烟花全城得信,都烧起烟花炮仗

嚟系子时到,府衙度点燃咗报时烟花,全城得信,都烧起烟花炮仗嚟.佟氏连忙叫醒仔,急急畀佢哋著翻件衫,执头发,就带咗佢哋到前院拜祖宗.先系张保带住四宁拜,跟住佟氏带咗淑宁跟住拜咗.等一套规矩做埋咗,才叫人抬出一啖煲摆枱上,煲入面嘅饺子紧水面翻滚.原来到嗰阵先吃饺子..比我哋乡下洗嘢嘅皂荚膏子好咗好多.听讲仲有香嘅番梘呢,就系加咗香料嘅,洗衫时净系用啲,就可以畀衫香足三日三夜啊!"「系点嚟嘅?"~~"!四宁眉开眼笑噉,一把抱起淑宁:"点睇阿哥呀?我可好耐冇同你一碌玩喇.&

.NET破解之太乐地图下载器【非暴破】

不知不觉,接触破解逆向已经三个月了,从当初的门外汉到现在的小白,这个过程只有经历过才知道其中的苦与乐: 有无知.困惑.痛苦.惊喜.彻悟.欣慰…… 有无助的软件脱壳,茫然的代码分析,有无趣的反复测试, 有人说破解不应该程序员干的事,我回复我不是程序员: 有人说.NET程序太没难度了,去破安卓,后来我真开始研究起安卓来: 有人说能不能把支付宝破了,我没回答. 虽然很忙,时间少,但每天晚上都要抽些时间来关注52论坛,关注破解:虽然并没有从破解中获取物质利益,但我愿意将自己的心得或作品分享给大家.不管怎

大型的支付系统,如支付宝、财付通每天交易额都非常巨大,后系统是如何对账、风控的呢?

为了可以更好地解释支付结算系统对账过程,我们先把业务从头到尾串起来描述一下场景,帮助大家理解:一个可能得不能再可能的场景,请大家深刻理解里面每个角色做了什么,获取了哪些信息:某日阳光灿烂,支付宝用户小明在淘宝上看中了暖脚器一只,价格100元.犹豫再三后小明使用支付宝网银完成了支付,支付宝显示支付成功,淘宝卖家通知他已发货,最近几日注意查收. 小明:持卡人,消费者,淘宝和支付宝的注册会员,完成了支付动作,自己的银行账户资金减少,交易成功.银行:收单银行,接受来自支付宝的名为“支付宝BBB”的100

【转】原来支付宝、财付通每天都是这样对账、风控的!

为了可以更好地解释支付结算系统对账过程,我们先把业务从头到尾串起来描述一下场景,帮助大家理解:一个可能得不能再可能的场景,请大家深刻理解里面每个角色做了什么,获取了哪些信息: 某日阳光灿烂,支付宝用户小明在淘宝上看中了暖脚器一只,价格100元.犹豫再三后小明使用支付宝网银完成了支付,支付宝显示支付成功,淘宝卖家通知他已发货,最近几日注意查收. 小明:持卡人,消费者,淘宝和支付宝的注册会员,完成了支付动作,自己的银行账户资金减少,交易成功. 银行:收单银行,接受来自支付宝的名为“支付宝BBB”的1

安卓模拟器这么慢,大家都怎么调试的?

============问题描述============ 刚开始用Eclipse调试,安卓模拟器太慢了,然后就只能用手机调试了 之后听说有个Andriod Stuio,然后我也试了一下,结果还是慢啊,所以想了解一下,大家都用什么调Andriod的代码? 是不是我的机器不行,I5+6G内存,SSD硬盘 ============解决方案1============ genymotion  ============解决方案2============ 这么nb的配置.. 还不行,还是用手机吧 ======

古代规模最大的战争:长平之战(做事不能太小气,不同的将领有不同的视角,要智胜,活着很重要)

前260年,长平古战场,秦军四月攻赵,秦军主将已是王龁,赵军主将已是廉颇,“赵军士卒犯秦斥兵,秦斥兵斩赵裨将茄.六月,陷赵军,取二鄣四尉.七月,赵军筑垒壁而守之.秦又攻其垒,取二尉,败其阵,夺西垒壁”. 也就是长平之战的第一阶段,双方在一系列试探性接触中,赵军吃了不少小亏,于是廉颇开始扎紧营垒打消耗战,企图等到秦军粮食耗尽自行撤退.毕竟战争已经过去三个月,且过了夏季之后,大家各自阵中的大量辅助劳力都要干农活儿了. 这战之前,在赵国宫廷之内,赵豹劝说赵孝成王不要招惹秦国的三大理由是:“秦国用牛耕田

为什么说程序员的前三年不要太看重工资水平

为什么说程序员的前三年不要太看重工资水平? 这是很多程序界的”过来人“给新人提出的忠告.1.得出这样结论的依据是什么?为什么?2.对于程序员职业发展的影响是怎样的?修改 举报 14 条评论 分享 • 邀请回答 按投票排序按时间排序 179 个回答 4432赞同反对,不会显示你的姓名 captain,互联网广告研发\RTB\CTR预估 李杨.angleboo.罗凌 等人赞同 本来以为基本会停止增长了,没想到前几天赞的数量一下又增长了一倍多.好像赞数突然增加的原因是另外一个关于应届生放弃某家企业of

据说,情商高的人,都这样做流程管理……

都说流程人是处女座.细节控.强迫症......其实他们不止有这些优(毛)点(病),他们还思想先进,有变革之心,有大局观念,人际交往能力强--总之,情商高啊!! 不信?看看下面这个流程冲突,你就知道能搞定一个公司流程的人是有多牛逼! 在一次高管会议上,领导们又在为一个重要产品的缺货情况争执不休: 总经理: xx产品为什么又出现市场缺货同时仓库爆仓的情况?爆仓为什么还缺货! 财务总监:有些库存已经积压一年了,我们的现金流快要出问题了. 供应链/采购总监:销售部和市场部根本没有把他们的产品需求告诉我们