技术解析

nginx-lua-fastdfs-GraphicsMagick 动态生成缩略图
0
2021-05-28 02:10:37
idczone
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-fast大带宽服务器dfs
http://rhomobi.com/topics/23
http://bbs.chinaunix.net/thread-4133106-1-1.html

希望可以给你一些思路。
一直也在用类似的图片动态缩略的网关。
1.支持任何图片源url
2.多种裁剪方式
3.可指定空白填色
额,前端配了个squid加速缓存
7年前最早用php写的,压力一大就渣了
5年前改成C写的fastcgi,存储是hash目录,都开到60个进程了,并发一大还是渣(无法分布式部署)
刚刚前几天用go重写了,存储用的redis协议加leveldb,保存原图和缩略图,热点数据识别,定时清理冷数据,可分布式部署。
公司线上在用,就不开源了。

另外,楼主的缩略参数得调调,大图缩小图,比例大于某个值得加锐化,要不然小图太雾蒙蒙了
当年对比flickr,测试无数次得到了一些参数值。

http://gi1.md.alicdn.com/imgextra/i1/401612253/T2ASPfXE4XXXXXXXXX_!!401612253.jpg_60x60.jpg 指的是这张图

能介绍一下你的那些参数么?


一般都缩略成jpg的吧,以ImageMagick为例
基本参数大致是 <尺寸变换参数> -type TrueColor <微调参数> +profile '*' -sampling-factor "1x1,1x1,1x1" -quantity 90 jpg:
当 imgW*imgH/toW/toH > 4.0 需要微调参数 -sharpen 1x1
只限宽度的,当 imgW/toW > 2.0 需要微调参数 -sharpen 1x1
如果原图是gif和png的类型可以带上微调参数 -mosaic
尺寸变化参数上也需要注意,
举个例子:
如果原图很大,但目标图只要200x宽的,
那从性能和最后的图片质量考虑可以直接采样 -size 500x 大小后再续处理
可以定几个采样区间。

以上只是些使用经验,仅供参考,专长不是图片处理方面的,如果描述有误请见谅:p

嗯,谢谢,已经解释的很详细了

对缩图优化这块很感兴趣,请问 ,-mosaic 看说明是:“ create a mosaic from an image sequence ”,百度和 Google 了,都没找到什么信息, 请问对 png 转 jpg 有什么优化处理 ?

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服