您的位置:首页 > 运维架构 > Nginx

图片水印

2016-04-07 16:29 603 查看
Nginx

location ~* /([0-9a-z\/]+)/(.*).(jpg|jpeg|png|bmp|webp|JPG)_sy(\.|\_)(.*)$ {
lua_code_cache off;
default_type text/html;
root  /filesystem/;
set $image_root /filesystem/;
set $new_img_path /filesystem/sy/;
set $ways $1;
set $fileName $2.$3;
set $file  $image_root$uri;
set $sy $4;
set $other $5;
if (!-f $file) {
rewrite_by_lua_file /file_lua/sy.lua;
}
}


Lua

local img_path = ngx.var.image_root .. ngx.var.ways .. "/" .. ngx.var.fileName
local new_img_path = ngx.var.new_img_path .. ngx.var.ways .. "/" .. ngx.var.fileName
local thumbnail_path = ngx.var.file
local img_dir = ngx.var.new_img_path .. ngx.var.ways
local logo = ngx.var.new_img_path .. "logo.png"
local gm = "/usr/bin/gm "

local function mkdir_img_path(img_dir)
--建文件路径
local cmd = "mkdir -p " .. img_dir
os.execute(cmd)
end

local function get_wh()
--获取原始长宽
local cmd = gm .. "identify " .. img_path
local img_origin = io.popen(cmd)
local img_info = img_origin:read("*all")
local w_h = string.match(img_info,"%d+x%d+")
local x = string.find(w_h,"x")
local w = string.sub(w_h,0,(x-1))
local h = string.sub(w_h,(x+1),string.len(w_h))
return w,h
end

local function shuiyin(in_path,out_path)
mkdir_img_path(img_dir)
local w,h = get_wh()
if tonumber(w) >= 400 or tonumber(h) >= 400 then
cmd =  gm .. "composite -gravity southeast -geometry +5+5  -dissolve 100 " .. logo .. " " .. in_path .. " "  .. out_path
os.execute(cmd)
else
cmd = "cp " .. in_path .. " " .. out_path
end
end

local function resiz(in_path,out_path,thumbnail,quality)
if not quality then
quality = 100
end

mkdir_img_path(img_dir)
if thumbnail then
local cmd = gm .."convert -quality " .. quality .. "% " .. in_path .. " -thumbnail " .. thumbnail .. " " .. out_path
os.execute(cmd)
end
end

local sy = ngx.var.sy
local other = ngx.var.other
local a = string.find(sy, "_")

if a == 1 then
thumbnail = string.match(other,"%d+x%d+")
local in_path = img_path
local out_path = new_img_path .. thumbnail
resiz(in_path,out_path,thumbnail,quality)

local in_path = new_img_path .. thumbnail
local out_path = thumbnail_path
shuiyin(in_path,out_path)
elseif a == nil then
local in_path = img_path
local out_path = thumbnail_path
shuiyin(in_path,out_path)
end


几年前之前给我们网站 安团智企ID 做的水印是这么做的,后来有了更好的方法所以摈弃了,故而拿出来交流交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lua nginx