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来判断该尺寸的图片是否已经存在,不存在处理。这样可以减轻服务器的压力应该会提升处理的速度吧。~

转载于:https://www.cnblogs.com/sanwenyu/p/4564044.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值