V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
hpxl
V2EX  ›  NGINX

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

  •  
  •   hpxl · 2014-05-22 22:27:04 +08:00 · 14245 次点击
    这是一个创建于 3837 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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

    希望可以给你一些思路。
    6 条回复    2016-06-30 17:01:45 +08:00
    pubby
        1
    pubby  
       2014-05-23 01:42:46 +08:00   ❤️ 2
    一直也在用类似的图片动态缩略的网关。

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

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

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

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


    另外,楼主的缩略参数得调调,大图缩小图,比例大于某个值得加锐化,要不然小图太雾蒙蒙了
    当年对比flickr,测试无数次得到了一些参数值。
    pubby
        2
    pubby  
       2014-05-23 01:45:21 +08:00
    GTim
        3
    GTim  
       2014-05-23 09:36:09 +08:00
    @pubby 能介绍一下你的那些参数么?
    pubby
        4
    pubby  
       2014-05-23 17:55:45 +08:00   ❤️ 2
    @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
        5
    GTim  
       2014-06-18 16:58:27 +08:00
    @pubby 嗯,谢谢,已经解释的很详细了
    javacty
        6
    javacty  
       2016-06-30 17:01:45 +08:00
    对缩图优化这块很感兴趣,请问 @pubby ,-mosaic 看说明是:“ create a mosaic from an image sequence ”,百度和 Google 了,都没找到什么信息, 请问对 png 转 jpg 有什么优化处理 ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2845 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:24 · PVG 17:24 · LAX 01:24 · JFK 04:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.