nginx-lua-fastdfs-GraphicsMagick 动态生成缩略图

2014-05-22 22:27:04 +08:00
 hpxl
https://github.com/hpxl/nginx-lua-fastdfs-GraphicsMagick

利用nginx lua 获取fastdfs的原图,存放原图到本地,根据不同规则url,例如:_60x60.jpg、_80x80.jpg,利用gm生成缩略图存放到本地。 第二次访问直接返回本地已生成的缩略图。 定时凌晨清除一段时间内未访问的图片,节省空间。

图片访问举例

http://192.168.1.113/group1/M00/00/00/wKgBcVN0wDiAILQXAAdtg6qArdU189.jpg
http://192.168.1.113/group1/M00/00/00/wKgBcVN0wDiAILQXAAdtg6qArdU189.jpg_80x80.jpg
http://gi1.md.alicdn.com/imgextra/i1/401612253/T2ASPfXE4XXXXXXXXX_!!401612253.jpg_60x60.jpg
参考网址

https://github.com/openresty/lua-nginx-module
https://github.com/azurewang/Nginx_Lua-FastDFS
https://github.com/azurewang/lua-resty-fastdfs
http://rhomobi.com/topics/23
http://bbs.chinaunix.net/thread-4133106-1-1.html

希望可以给你一些思路。
14025 次点击
所在节点    NGINX
6 条回复
pubby
2014-05-23 01:42:46 +08:00
一直也在用类似的图片动态缩略的网关。

1.支持任何图片源url
2.多种裁剪方式
3.可指定空白填色

额,前端配了个squid加速缓存

7年前最早用php写的,压力一大就渣了
5年前改成C写的fastcgi,存储是hash目录,都开到60个进程了,并发一大还是渣(无法分布式部署)
刚刚前几天用go重写了,存储用的redis协议加leveldb,保存原图和缩略图,热点数据识别,定时清理冷数据,可分布式部署。

公司线上在用,就不开源了。


另外,楼主的缩略参数得调调,大图缩小图,比例大于某个值得加锐化,要不然小图太雾蒙蒙了
当年对比flickr,测试无数次得到了一些参数值。
pubby
2014-05-23 01:45:21 +08:00
GTim
2014-05-23 09:36:09 +08:00
@pubby 能介绍一下你的那些参数么?
pubby
2014-05-23 17:55:45 +08:00
@GTim
一般都缩略成jpg的吧,以ImageMagick为例

基本参数大致是 <尺寸变换参数> -type TrueColor <微调参数> +profile '*' -sampling-factor "1x1,1x1,1x1" -quantity 90 <input> jpg:<output>

当 imgW*imgH/toW/toH > 4.0 需要微调参数 -sharpen 1x1

只限宽度的,当 imgW/toW > 2.0 需要微调参数 -sharpen 1x1

如果原图是gif和png的类型可以带上微调参数 -mosaic

尺寸变化参数上也需要注意,
举个例子:
如果原图很大,但目标图只要200x宽的,
那从性能和最后的图片质量考虑可以直接采样 -size 500x 大小后再续处理
可以定几个采样区间。


以上只是些使用经验,仅供参考,专长不是图片处理方面的,如果描述有误请见谅:p
GTim
2014-06-18 16:58:27 +08:00
@pubby 嗯,谢谢,已经解释的很详细了
javacty
2016-06-30 17:01:45 +08:00
对缩图优化这块很感兴趣,请问 @pubby ,-mosaic 看说明是:“ create a mosaic from an image sequence ”,百度和 Google 了,都没找到什么信息, 请问对 png 转 jpg 有什么优化处理 ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/113845

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX