1. 程式人生 > >Fastdfs與nginx進行壓縮圖片比率隨記

Fastdfs與nginx進行壓縮圖片比率隨記

前陣子,工作搞了一下Fastdfs與nginx進行壓縮圖片比率儲存在伺服器中,今天應用下工作時間記錄下,本打算週六,老是因為一些事情給耽擱,目前正在搞一個XMPP訊息通訊協議,目前還是一頭霧水,沒有實現什麼功能,在此勉勵,加油好好搞搞,搞好了記錄下一些登入、退出、傳送、接收的一些介面給客戶端使用。在此先把前面自己做的那個功能在此分享下,是一個模仿淘寶的,希望大神們有什麼想法可以不吝賜教:

參考:http://www.v2ex.com/t/113845

http://blog.sina.com.cn/openresty

http://write.blog.csdn.net/postedit

https://github.com/azurewang/lua-resty-fastdfs/blob/master/lib/resty/fastdfs/storage.lua

https://github.com/azurewang/lua-resty-fastdfs/blob/master/lib/resty/fastdfs/storage.lua

http://www.111cn.net/sys/CentOS/55070.htm

http://wiki.nginx.org/HttpLuaModule

自己是通過前面的參考配置lua與nginx的結合使用,利用指令碼語言lua的強大特性和nginx的特性來實現這個功能,在nginx.conf的配置檔案中加入如下程式碼:

  server {
        listen        22222;
        server_name  localhost;
        #  server_name  somename  alias  another.alias;
        location /images/{
        alias /root/images;
       set $image_root /root;
        set $file $image_root$uri;
        content_by_lua '
               ngx.header.content_type = "text/plain";
               ngx.say(ngx.var.file);
           ';
        }
      location /lua{
         set $test "hello, world.";
            content_by_lua '
                 ngx.header.content_type = "text/plain";
                 ngx.say(ngx.var.test);
           ';
        }
      location /group1/M00 {
            alias /usr/local/servers/data/fdfs/data;
            set $image_root "/usr/local/servers/data/fdfs/data";
         #  alias /root/images;
          # set $image_root "/root/images";
            if ( $uri ~ "/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/(.*)" ) {
                 set $image_dir "$image_root/$3/$4";
                 set $image_name "$5";
                 set $file "$image_dir/$image_name";
             }
        #  content_by_lua '
         #        ngx.header.content_type = "text/plain";
          #       ngx.say(ngx.var.image_dir);
           #      ngx.say(ngx.var.image_name);
            #     ngx.say(ngx.var.file);
         # ';
             if ( !-f $file ) {
                # 關閉lua程式碼快取,方便除錯lua指令碼
                #lua_code_cache off;
                content_by_lua_file "/usr/local/servers/lua/convert.lua";
             }
                 ngx_fastdfs_module;
        }
        # location ~ /group[1-3]/M00{
         #  root  /usr/local/servers/data/fdfs/data; #/fdfs/storage/data;
          # ngx_fastdfs_module;
           #    }


       }

這裡面利用了nginx的正則表示式,正則表示式是相當強悍的,可以得到你需要訪問的uri的值。

然後再convert.lua中寫入如下程式碼:

local area = nil
local originalUri = ngx.var.uri;
local originalFile = ngx.var.file;
local index = string.find(ngx.var.uri, "([0-9]+)x([0-9]+)");
if index then
    originalUri = string.sub(ngx.var.uri, 0, index-2);
    area = string.sub(ngx.var.uri, index);
    index1 = string.find(area, "([.])");
    area1 = string.sub(area, 0, index1-1);


    local index2 = string.find(originalFile, "([0-9]+)x([0-9]+)");
    originalFile1 = string.sub(originalFile, 0, index2-2)
end
local image_sizes = {"80x80", "800x600", "40x40", "60x60"};
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, area1) then
    local command = "/usr/bin/gm convert " .. originalFile1  .. " -thumbnail " .. area1 .. " -background gray -gravity center -extent " .. area1 .. " " .. ngx.var.file;
    os.execute(command);
end;


~差不多這樣就可以實現功能了,通過訪問可以實現比率壓縮,因為在上班時間暫時就這麼寫下了,目前的一個工作還有很多功能需要實現,如有看不懂的可以留言,大神們可以指教,謝謝!

相關推薦

Fastdfsnginx進行壓縮圖片比率

前陣子,工作搞了一下Fastdfs與nginx進行壓縮圖片比率儲存在伺服器中,今天應用下工作時間記錄下,本打算週六,老是因為一些事情給耽擱,目前正在搞一個XMPP訊息通訊協議,目前還是一頭霧水,沒有實現什麼功能,在此勉勵,加油好好搞搞,搞好了記錄下一些登入、退出、傳送、接收

FastDFSNginx的配置說明

data pub 線性 標識 空間不足 服務端 hub types tcp 1.簡介 FastDFS是一個開源的輕量級分布式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件為

FastDFSNginx的搭建及遇到的問題

nginx.pid cli git nbsp 第一步 files have 日誌文件 自己 1.1 FastDFS與Nginx的搭建 可以使用一臺虛擬機來模擬,只有一個Tracker、一個Storage服務。 配置nginx訪問圖片。 1.1.1 搭建步驟 第一步:

FastDFSNginx整合

最近考慮在專案中使用檔案伺服器來儲存圖片檔案,FastDFS 是一個開源的輕量級的分散式檔案系統,由 tracker server(跟蹤伺服器) 、storage server(儲存伺服器) 、client(客戶端) 三部分組成,主要解決了海量資料儲存問題,特別適合中小檔案( 4KB<fi

K-Means聚類演算法進行壓縮圖片

(最近在車間幹活的時候把手砸傷了,所以打字還是有點不便,大家原諒我更新的慢,加上贊比較少,心情比較低落TAT) 首先介紹一下題圖,這個是個小蘿莉的照片(如下),每一個點都可以視作是一個三維向量(點?)(RGB三通道圖片),那麼,使用K-Means演算法對這些點進行聚類,我們就很容易得到幾個中心點和幾類,把同一

通過tfs-nginx進行圖片壓縮過程

tfs 壓縮 lua TFS是一個高可擴展、高可用、高性能、面向互聯網服務的分布式文件系統,主要針對海量的非結構化數據,它構築在普通的Linux機器 集群上,可為外部提供高可靠和高並發的存儲訪問。TFS為淘寶提供海量小文件存儲,通常文件大小不超過1M,滿足了淘寶對小文件存儲的需求,被廣泛地應用

一 .fastDFS:Linux 搭建分散式檔案儲存FastDFS圖片伺服器以及配合nginx / 使用Nginx進行負載均衡

    Linux 安裝分散式檔案儲存FastDFS圖片伺服器以及配合nginx/使用Nginx進行負載均衡 alfresco    虛擬網路編輯器修改閘道器    修改成對應的閘道器及ip:vim /etc/syscon

一、CentOS7下搭建FastDFS+Nginx實現靜態圖片服務器

文件 源碼 wsgi ide 管理 配置 ror centos7 tor 在集群環境下,圖片存放在本地存在諸多限制,一般采用單獨的圖片服務器進行管理。FastDFS就是這樣一個圖片管理服務器。 環境需求,CentOS7下 一.先下載三件套,並上傳到服務器中(Nginx自行下

怎麼線上對圖片進行壓縮不改變清晰度

隨著使用電腦的次數越來越多,電腦上面的檔案也隨之越來越多,特別是圖片這一型別的檔案,有的是在網站上的精美圖片自己喜歡的,也有的時候表情包這一類的,還有的就是自己拍的照片了,日積月累,電腦上機會堆滿了照片,不僅影響了我桌面整潔,還影響了我電腦的流暢度,為此我想了一個線上壓縮圖片的方法,今天就給大家分享一下。步驟

怎麽在線對圖片進行壓縮不改變清晰度

進入 影響 text proc 滿了 整潔 時間 縮進 follow 隨著使用電腦的次數越來越多,電腦上面的文件也隨之越來越多,特別是圖片這一類型的文件,有的是在網站上的精美圖片自己喜歡的,也有的時候表情包這一類的,還有的就是自己拍的照片了,日積月累,電腦上機會堆滿了照片,

.net core 介面返回圖片並且進行壓縮

背景:  .net core 中預設已經取消可以直接訪問圖片,因為這樣不安全. 導致我們上傳的圖片無法直接通過url訪問. 解決方案:  一: 通過修改專案配置,使可以直接通過url訪問.(方法略,可以百度); 二: 圖片都通過介面返回,接口裡面讀取專案的圖片,然後返回流; &nb

CSS圖片剪裁原比例壓縮或放大

在前端網頁製作的過程中,圖片的處理往往比較頭疼,當然不考慮你有很給力的美工後援的情況下。以下將對一些常見的CSS圖片處理需求情況進行分析: 1、一張圖片要放在固定寬高的內容塊中,並填充滿整個內容塊(看起來整齊劃一) 我們假設要把一張大小為1920*1200的圖

運用js進行圖片壓縮上傳

運用js進行對圖片的壓縮上傳 1.html片段 <label class="font-size-normal mar-top20" ><div style="width: 4px;height: 25.4px;background-color: #ffc002;

Java 圖片進行壓縮,要求小於30K,使用Thumbnails進行壓縮

public static String resizeImageTo30K(String base64Img) { try { BufferedImage src = base64String2BufferedImage(base64Img);

多張圖片如何進行壓縮圖片壓縮怎麼操作?

多張圖片怎麼進行壓縮呢?我們日常會產生很多的截圖,這些截圖我們也不可以刪除,就要將這些圖片壓縮一下了,怎麼進行多張圖片的壓縮呢?給大家分享一種可以同時壓縮多張圖片的方法。 1:先找到一款壓縮軟體,開啟壓縮軟體進入到圖片壓縮的頁面。 2:將自己的圖片準備好放在一個資

使用Python批量對圖片進行壓縮處理

這兩天在對網站伺服器進行遷移的過程中發現歷史積累的圖片附件炒雞多,許多都是未經壓縮直接從相機裡面拷出來上傳的原始解析度尺寸,相當浪費空間,而網站頁面上進行圖片顯示其實只需要寬度能達到700px就夠了,

通過URL下載圖片進行壓縮並上傳到oss和本地

package test.com.redis; import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStr

fastdfs安裝和nginx整合

完全參考部落格:https://blog.csdn.net/m0_37797991/article/details/73385161。有些自己遇到坑的地方記錄一下。 1.安裝依賴: yum install git gcc gcc-c++ make automake autoconf li

JAVA使用thumbnailator對base64圖片進行壓縮

利用thumbnailator對圖片進行壓縮 使用thumbnailator首先要在mavan裡新增依賴: <!-- 圖片縮圖 --> <dependency> <groupId>net.coobird<

c#利用zlib.net對string進行壓縮java程式生成結果對應)

public static string Zip(string value) { byte[] byteArray = Encoding.UTF8