请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 3149|回复: 9

[php] 大图片如何做缩略图? [复制链接]

numsix 楼主

燕燕

金牌会员

帖子
1453
体力
3165
威望
44
发表于 2010-9-1 12:14:30 |显示全部楼层
求教一下,很大的图片如何做缩略图,用GD的话不行,内存占用太严重,APACHE不断的重启....就是过不去,请教大图片如何缩略呢在PHP环境下。谢谢
西部数码顶级域名注册商39元抢注!

罗亮

超级版主 手机认证 

帖子
15893
体力
19481
威望
19
居住地
北京市 海淀区
发表于 2010-9-1 16:41:18 |显示全部楼层
我用GD函数生成缩略图没有内存占用严重的情况

  1. <?php
  2. /**
  3. * 生成缩略图
  4. *
  5. * @param string $imagePath 图片路径
  6. * @param string $thumb 生成缩略图名称
  7. * @param integer $width 生成缩略图最大宽度
  8. * @param integer $height 生成缩略图最大高度
  9. *
  10. * @author Silver
  11. * @link http://www.zdyi.com
  12. */

  13. function resizeImage($imagePath, $thumb, $width = 200, $height = 200)
  14. {
  15.         list($imageWidth, $imageHeight) = getimagesize($imagePath);
  16.         $imagePath = imagecreatefromjpeg($imagePath);

  17.         if ($width && ($imageWidth < $imageHeight))
  18.         {
  19.                 $width = ($height / $imageHeight) * $imageWidth;
  20.         }
  21.         else
  22.         {
  23.                 $height = ($width / $imageWidth) * $imageHeight;
  24.         }

  25.         $image = imagecreatetruecolor($width, $height);
  26.         imagecopyresampled($image, $imagePath, 0, 0, 0, 0, $width, $height, $imageWidth, $imageHeight);
  27.         imagepng($image, $thumb);
  28.         imagedestroy($image);
  29. }

  30. resizeImage('test.jpg', 'test_thumb.jpg');
  31. ?>
复制代码
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

一路蹒跚

钻石会员 手机认证 

帖子
3788
体力
8325
威望
7
居住地
山东省 潍坊市
发表于 2010-9-1 18:11:42 |显示全部楼层
php是用来做WEB的,WEB上的图片一般小于2M,2M的 应该不是问题!
如果太大了,比如婚纱摄影原片,一张10M ,并发多了,挂掉也有可能!
主要看服务器性能!
PHP定制 QQ:31301678

使用道具 举报

numsix 楼主

燕燕

金牌会员

帖子
1453
体力
3165
威望
44
发表于 2010-9-3 22:23:59 |显示全部楼层
To 银子:几百K的图片当然GD是没问题的,你试个80M一张的图片;
To 一路蹒跚:2M确实不是什么大问题。10M都算小的,一般搞摄影的照片都是30-100M的tif格式图片。

有个大虾这么告诉我的,大体意思是无论GD也好还是别的也好,处理图片基本上都是把图片分解为raw的小片段来处理(不知道我说的对不对),因为需要读取到内存进行操作,所以对于大图片,耗尽内存是比较正常的。

最后咨询了不少人,有这么几个思路:
1、做一组队列服务器,尽量控制多图片同时处理的情况,提高效率;
2、利用第三方程序做PHP的接口,比如用C来写个图片压缩处理服务器;
3、硬件,JPG图像压缩卡?
4、ImageMagick.

为了省钱,我用了第4种办法。直接exec 很爽,30M的图片很快压缩完成,减少了很多代码量....

使用道具 举报

帖子
269
体力
491
威望
0
居住地
广东省 汕头市
发表于 2010-9-4 11:34:53 |显示全部楼层
做个记号.下次也许也碰到楼主一样的问题
my way

使用道具 举报

lemm 

起名柠檬树

银牌会员 手机认证 

帖子
1010
体力
1396
威望
0
居住地
北京市 石景山区
发表于 2010-9-4 22:00:24 |显示全部楼层
可以试试GraphicsMagick效率应该会更好。
广告位预定中....

使用道具 举报

numsix 楼主

燕燕

金牌会员

帖子
1453
体力
3165
威望
44
发表于 2010-9-5 09:22:51 |显示全部楼层
TO:起名柠檬树 恩,好主意。据说Flickr原来就用ImageMagick,后来改成了GraphicsMagick。似乎就是因为效率更好些。

使用道具 举报

帖子
675
体力
1660
威望
1
居住地
云南省 昆明市
发表于 2010-9-5 19:27:15 |显示全部楼层
很好的话题,也做个记号,以后肯定会遇到,有用过其中几种方法的朋友可以分享一下利弊。

使用道具 举报

李惟

银牌会员 手机认证 

帖子
831
体力
2115
威望
0
发表于 2010-9-6 16:31:02 |显示全部楼层
有必要吗,80兆的图片你要传网上去?一张要传多久,就算处理过来,有必要这么折腾吗?

下个图片处理软件本地处理去,比如ACDC,把优化好的格式图片传网络上。

使用道具 举报

个性网

初级会员 手机认证 

帖子
66
体力
220
威望
0
居住地
浙江省 嘉兴市
发表于 2010-9-8 12:43:36 |显示全部楼层
你可以在自己机器上运行 然后ftp上传的
用php的ftp函数 就可以了
个性网

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-12 08:34 , Processed in 0.093826 second(s), 8 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部