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

 彭伟波2013 发布于 2022-11-22 16:05

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


这个就是 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 个回答
  • 有的cdn支持图片缩略图功能,

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

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

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

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

    2022-11-22 17:22 回答
  • 用imagick和ImageMagick库吧

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

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

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

    2022-11-22 17:22 回答
  • 直接用 CDN 服务商的自动缩略图工具吧,好像 upyun 和 qiniu 都有这种接口的。

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

    2022-11-22 17:22 回答
  • 樓下那些重複我的答案卻不點讚的幾個意思 ╮( ̄﹏ ̄)╭


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

    其次,緩存。

    最簡單的緩存設計:

    url 爲 cache/image0001-1024x768.jpg

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

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

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

    2022-11-22 17:22 回答
  • PHP处理图片本来就耗服务器资源~~如果你一个页面有很多需要这种时时去处理的图片资源~~服务器能忙过来~~

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

    2022-11-22 17:22 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有