nginx+lua_nginx+GraphicsMagick生成实时缩略图

暂做笔记,带后续验证通过后,再补充 1、2、3 步。

一、安装 lua

二、安装 GraphicsMagick

三、安装nginx

四、配置 nginx

nginx.conf

http
   {
        lua_package_path ‘/usr/local/openresty/nginx/lua/?.lua;;‘;

        server {
                listen       80;
                server_name  img.rhythmk.org;
                root  /home/wwwroot/static/image;

                #对类似_100x100.gif/jpg/png/jpeg进行缩略图处理
                location ~* _([0-9]+)x([0-9]+)\.(gif|jpg|png|jpeg)$ {                 #匹配文件名规则
                        root  /home/wwwroot/static/image;                             #站点根目录
                        set $image_root /home/wwwroot/static/image;                   #图片目录
                        set $thumbnail_root /home/wwwroot/static/thumbnail;           #缩略图存放目录
                        #如果缩略图文件存在,直接返回
                        set $file $thumbnail_root$uri;
                        if (-f $file) {
                                rewrite ^/(.*)$ /thumbnail/$1 last;
                        }
                        #如果缩略图文件不存在,则应用缩略图模块处理
                        if (!-f $file) {
                                rewrite_by_lua_file lua/thumbnail.lua;
                        }
                }
         }

     #include conf/*.conf;
}

lua/thumbnail.lua

    local index = string.find(ngx.var.uri, "([0-9]+)x([0-9]+)");
    local originalUri = string.sub(ngx.var.uri, 0, index-2);
    local area = string.sub(ngx.var.uri, index);
    index = string.find(area, "([.])");
    area = string.sub(area, 0, index-1);  

    local image_sizes = {"80x80", "800x600", "40x40"};
    function table.contains(table, element)
       for _, value in pairs(table) do
          if value == element then
             return true
          end
       end
       return false
    end  

    if table.contains(image_sizes, area) then
        local command = "gm convert " .. ngx.var.image_root .. originalUri .. " -thumbnail " .. area .. " -background gray -gravity center -extent " .. area .. " " .. ngx.var.file;
        os.execute(command);
        ngx.req.set_uri(ngx.var.uri, true);
    else
        ngx.exit(404);
    end;  
时间: 2024-08-28 11:11:47

nginx+lua_nginx+GraphicsMagick生成实时缩略图的相关文章

nginx+lua+GraphicsMagick生成实时缩略图-CentOS7

背景 大多数的系统都会涉及缩略图的处理,比如新闻系统和电商系统,特别是电商系统,每个商品大图都会对应一系列尺寸的缩略图用于不同业务场景的使用.部分系统也会生成不同尺寸的缩略图以供PC.手机端.ipad端使用. 解决方案探索: 直接加载原图,使用css样式表来控制图片的宽高.显然不太合适,大家也尽量不要这样做. web程序在上传成功后,同时生成相应缩略图.这种做法效率较低,如果遇到批量导入的业务时严重影响性能.并且同步生成缩略图会占用一定量的存储空间,如果能按需生成岂不更好? 使用七牛.阿里云提供

ftp+nginx+lua_Nginx+GraphicsMagick来实现目录浏览、实时缩略图

一.FTP服务器安装配置 1.rpm -ivh vsftpd-2.2.2-11.el6_4.1.i686.rpm 2.service vsftpd start 3.chkconfig vsftpd on 4.配置 cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak vim /etc/vsftpd/vsftpd.conf 12 anonymous_enable=NO 禁止匿名访问...121 chroot_local_user=yes 禁锢

nginx+lua_nginx+GraphicsMagick缩略图+tfs获取原图+ngx_cache_purge

环境介绍 [email protected]:~# uname -aLinux ubuntu-1.230 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux[email protected]:~# cat /etc/issueUbuntu 12.04.1 LTS \n \l [email protected]:~# PS:以下操作我只在如上系统操作,仅供参考 1.安

Nginx+lua_Nginx+GraphicsMagick来实现实时缩略图

1.安装GraphicsMagick cd /usr/local/src wget http://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/1.3.20/GraphicsMagick-1.3.20.tar.gz/download tar -zxvf GraphicsMagick-1.3.20.tar.gz cd GraphicsMagick-1.3.20 ./configure --prefix=/usr/local

利用FFmpeg生成视频缩略图 2.1.8

1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/ D:\ffmpeg 目录追加到系统 PATH 环境变量中; 2.运行 copy_to_ffmpeg.bat, 把 echoc.exe LED_font.ttf 文件拷贝到 D:\ffmpeg\ 目录下. echoc.exe 在CMD控制台环境下输出彩色字符; LED_font.ttf 用于输出时间戳

自动生成网页缩略图

http://www.xmlas.com/web-thumbnail-autogenerationcache.html thinkphp与jQuery 自动生成网页缩略图,布布扣,bubuko.com

c#.net 生成清晰缩略图

1 public void imgsize() 2 { 3 //本例中假定了两个变量: 4 5 String src = "c:/myImages/a.jpg"; //源图像文件的绝对路径 6 String dest = "c:/myImages/a_th.jpg"; //生成的缩略图图像文件的绝对路径 7 8 int thumbWidth = 132; //要生成的缩略图的宽度 9 int thumbHeight = 100; //要生成的缩略图的高度 10 Sy

利用FFmpeg生成视频缩略图 2.3.1

1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/ D:\ffmpeg 目录追加到系统 PATH 环境变量中; 2.运行 copy_to_ffmpeg.bat, 把 echoc.exe LED_font.ttf 文件拷贝到 D:\ffmpeg\ 目录下. echoc.exe 在CMD控制台环境下输出彩色字符; LED_font.ttf 用于输出时间戳

[转] [C#] 解决生成的缩略图模糊的问题

一.问题场景 针对一张正方形图片生成 48px × 48px 的缩略图并保存为图片文件,但发现生成的缩略图很模糊. 生成的模糊的缩略图如下: 原始图片(300px × 300px, png格式): 代码中调用的是 System.Drawing.Image. GetThumbnailImage() 方法,主要实现代码如下: 1 private void SaveThumbnail(Bitmap bitmap, int width, int height, string directory, str