Коллеги, подскажите пожалуйста Есть ресайзер на nginx location ~* /images/(?<folder>avatars|covers|wallpapers|banners)/(?<filename>.+).(?<ext>jpg|png) {

access_log off;
expires 24h;
add_header Cache-Control private;

content_by_lua_block{
local imgUri = '/images/' .. ngx.var.folder .. '/' .. ngx.var.filename .. '.' .. ngx.var.ext
local imgPath = '/var/www/litgorod/public' .. imgUri
local f = io.open(imgPath)
if f then
if ngx.var.arg_h or ngx.var.arg_w or ngx.var.arg_q or ngx.var.arg_t then
f:close()
local h = 0
local w = 0
local t = ''
local q = 75
local type = ''
if ngx.var.arg_h then h = ngx.var.arg_h end
if ngx.var.arg_w then w = ngx.var.arg_w end
if ngx.var.arg_q then q = ngx.var.arg_q end
if ngx.var.arg_t then t = ngx.var.arg_t end
if t == '1' then type = '^' end
if t == '2' then type = '!' end
local magick = require "imagick"
local img = magick.open(imgPath)
img:set_format('JPEG')
img:set_quality(q)
if h == 0 and w == 0 then
h = img:height()
w = img:width()
else
if h == 0 then h = math.floor((img:height() / img:width() * w) + 0.5) end
if w == 0 then w = math.floor((img:width() /img:height() * h) + 0.5) end
end
img:smart_resize(w .. 'x' .. h .. type)
ngx.header['Content-Type'] = 'image/jpeg'
ngx.say(img:blob())
else
ngx.header['Content-Type'] = 'image/jpeg'
ngx.say(f:read("*all"))
f:close()
end
else
ngx.exit(ngx.HTTP_NOT_FOUND)
end
}
}

location ~* \.(gif|jpg|png|ico|otf|sng|xls|doc|exe|jpeg|tgx|svg|js|css|fb2|epub|woff2|woff|ttf|eot|webp|json|map|mp4|webp)$ {
root /var/www/litgorod/public;
access_log off;
expires 24h;
add_header Cache-Control private;
}
Каждый раз при запросе url вида
/images/avatars/1459297197c16708254c0130af6377df.png
дергается lua скрипт
Хотелось бы дергать ресайзер только url вида
/images/avatars/1459297197c16708254c0130af6377df.png?w=48&h=48
Как корректно поправить локейшен что бы попадали только url из второго примера?
Пробовал дописывать регулярку, результат некорректен
Пробовал обернуть lua скрип в условие
if ($is_args) {
}
Аналогично

2 ответов

39 просмотров

Закинь это на пастебин, а то у меня монитор порвало в клочья.

Похожие вопросы

Обсуждают сегодня

Всем привет. На руках есть видеопоток с камеры микроскопа, который показывает клетки. (Фото 1). Пытаюсь обвести их квадратами и пронумеровать на картинке. Пока получается...
Semyon
10
I am reaching out on behalf of my brother, who is currently seeking a data science internship opportunity. He is passionate about data science and has been actively honing his...
Shivam Kumar
3
Всём доброго времени суток, хотел бы узнать, очень понравилось направление ML и в частности к компьютерному зрению (диплом по распознаванию болячек на растениях) , хотел бы по...
Il'ya King
12
Всем привет! Ребят подскажите пожалуйста Есть ли различия обработки фото (стоп кадр из видео) и кадра из видео? Сделал поиск контуров и отфильтровал лишнее Но при запуск...
Evgeniy
4
Подскажите, возможно ли без нейросети получить контуры выделяющего объекта, в данным случае авто? Нужно определить не сам авто, а просто объект который выделяется, т.е. темная...
Denis
1
всем привет, есть видео футбольных матчей и необходимо определить какое действие происходит на видео в определённый момент времени. Условно, на 5 секунде игрок сделал пас, на ...
Vadzim _B
1
Hello everyone, ребят, к какому уровню сложности может относиться задачка по отделению облаков от неба для видео? (от 1 до 10,) *в условиях смены времени суток *при неизменно...
Merge
16
Понял) А легковесных моделей для таких задач не встречали? Т.е. что бы не объекты определял, а цветовые пятна, если так можно назвать.
Denis
3
Для подстче машин которые проходят линию использую yolov3 и сортинг алгоритм. Один фрейм обрабатывает 1.6секунд. Как можно ускорить или посоветуйте что можно использовать вмес...
Nurdaulet
3
Добрый вечер, подскажите, есть ли какие-то курсы/книги по openCV для c++, а то много где находил ссылка на: https://robocraft.ru/opencv Но сам курс 2010-го года, и там мало ...
Никита Мельников
2
Карта сайта