运维与监控  - 讨论区

标题:使用 SLIR 对图片进行在线缩放、裁剪

2013年11月28日 星期四 11:01

有些同学发现<img />标签可以指定图片的高度和宽度,而且在浏览器里面看起来确实是将图片缩放成想要的规格了,于是非常高兴,把这个“技巧”当成一个绝世秘籍,到处施展。

这个问题很严重,普遍存在于很多中小型网站。本来我们只需要一个规格为100x100的图片,却放置了一个500x500的图片,不仅会增加下载时间,还会加重浏览器负担,造成图片加载缓慢。网站或者CDN的流量也会大大增加,造成不必要的浪费。

著名的Yahoo关于网站性能的 best practice rules  中就有一条是: Don't Scale Images in HTML

问题的根源在于:页面对于图片规格的需求五花八门,而图片服务器却只有固定的一两种规格,而生成一种全新规格的图片成本很高。

SLIR解决了这个问题。

SLIR是一组PHP代码,将其部署到WEB服务器上,在URL中填写不同的参数,就可以在线生成相应规格的图片,并且实现了JPEG质量调整、裁剪、缓存等功能。使用也非常方便。

部署SLIR需要WEB服务器支持PHP 5.1.2或者更高版本,并且有GD模块,如果是Apache HTTPD服务器,部署就更方便了。具体的部署过程请参考官方文档。

举例说明一下引用图片的URL规则:

原图图片URL:http://example.com/img/1.jpg

等比例缩放,宽度为100px:http://example.com/slir/w100/img/1.jpg

等比例缩放,高度为200px:http://example.com/slir/h100/img/1.jpg

将图片裁剪为100x100px:http://example.com/slir/w100-h100-c1x1/img/1.jpg

据了解,这个程序的作者本身是一个摄影爱好者,应该算是专业人士吧,所以不用太担心缩放后的图片质量劣化。经过我的测试和分析,缩放后的图片质量挺不错,反正我看不出太大问题。

这组程序有一个潜在的问题,就是图片缓存只有一级目录,使用一段时间后,缓存目录中可能会积累大量文件,这对于系统性能和维护都是一个问题,稍后我会提交一个Patch修复这个问题。

更多有关资料可以参考:

https://github.com/lencioni/SLIR

 

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号