Nginx 新增模块 http_image_filter_module 来实现动态生成缩略图
前言
通过 nginx 的 HttpImageFilterModule 模块裁剪过大的图片到指定大小,这个nginx自带的模块是默认关闭的,所以需要重新编译nginx加上此模块。
一、编译 nginx
1.查看 nginx 模块
由于nginx 是之前装好的,这里需要先看一下是否安装了HttpImageFilterModule模块
切换到 nginx /sbin
目录下,执行命令 ./nginx -V
–prefix=/usr/local/nginx
–with-http_ssl_module
–add-module=…/fastdfs-nginx-module-master/src
–with-http_gzip_static_module
–with-stream
–with-http_stub_status_module
–with-http_realip_module
没有HttpImageFilterModule 模块,需要加上--with-http_image_filter_module
2.重新编译安装 nginx
切换到 nginx 的解压目录,执行命令
./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=../fastdfs-nginx-module-master/src --with-http_gzip_static_module --with-stream --with-http_stub_status_module --with-http_realip_module --with-http_image_filter_module
出行报错
缺少 GD 依赖,执行命令yum install gd gd-devel
,重新编译成功之后执行 make && make install
再次执行./nginx -V
查看 nginx 模块
二、配置 nginx
修改 nginx.conf 配置文件
location ~/group1/M00/(.+)_(\d+)x(\d+)\.(jpg|gif|png|jpeg){ # .表示除\n外的任意字符 +表示1-正无穷 \d表示数字alias /fastdfs/storage/data; #设置别名ngx_fastdfs_module;set $w $2; #正则表达式匹配的第二个参数,此处为第一个(\d+)set $h $3;if ($w != "0") {rewrite group1/M00(.+)_(\d+)x(\d+)\.(jpg|gif|png|jpeg)$ group1/M00$1.$4 break;}set $h $3;if ($h != "0") {rewrite group1/M00(.+)_(\d+)x(\d+)\.(jpg|gif|png|jpeg)$ group1/M00$1.$4 break;}image_filter resize $w $h;image_filter_buffer 50M; ##原图最大50M,要裁剪的图片超过2M返回415错误
}
location ~/group[0-9]/ {ngx_fastdfs_module;
}
其他配置参考
image_filter off;
#关闭模块
image_filter test;
#确保图片是jpeg gif png否则返415错误
image_filter size;
#输出有关图像的json格式:例如以下显示{ “img” : { “width”: 100, “height”: 100, “type”: “gif” } } 出错显示:{}
image_filter rotate 90|180|270;
#旋转指定度数的图像,该度数只能是90, 180, 270,參数能够包括变量,单独或一起与resize crop一起使用。
image_filter resize width height;
#按比例降低图像到指定大小,公降低一个能够还有一个用"-"来表示,出错415,參数值可包括变量,能够与rotate一起使用,则两个一起生效。
image_filter crop width height;
#按比例降低图像比較大的側面积和还有一側多余的载翦边缘,其他和rotate一样。
image_filter_buffer 10M;
#设置读取图像缓冲的最大大小,超过则415错误。
image_filter_interlace on;
#如果启用,最终图像将交错。对于JPEG,最终图像将采用 “逐行JPEG” 格式
image_filter_jpeg_quality 95;
#设置变换的JPEG图像的期望质量。可接受的值是从1到100的范围内。较小的值通常意味着既降低图像质量,降低数据传输,推荐的最大值为95。參数值能够包括变量。
image_filter_sharpen 100;
#添加了最终图像的清晰度。锐度百分比能够超过100。零值将禁用锐化。參数值能够包括变量。
image_filter_transparency on;
#定义是否应该透明转换的GIF图像或PNG图像与调色板中指定的颜色时,能够保留。透明度的损失将导致更好的图像质量。在PNG的Alpha通道总是保留透明度。
配置好之后,重启 nginx
./nginx -s stop
./nginx
测试访问图片
原图测试:
http://192.168.16.123/group1/M00/00/00/wKgfjmLGdKuADrt6AAVDLwY9Icw011.jpg
裁剪测试:
http://192.168.16.123/group1/M00/00/00/wKgfjmLGdKuADrt6AAVDLwY9Icw011_600x300.jpg
总结
以上就是今天要讲的内容,本文仅仅简单介绍了nginx实现图片压缩裁剪的配置,以上方法亲测有效,希望能给大家一个参考。
创作不易,关注💖、点赞👍、收藏🎉就是对作者最大的鼓励👏,欢迎在下方评论留言🧐
相关文章:

Nginx 新增模块 http_image_filter_module 来实现动态生成缩略图
前言 通过 nginx 的 HttpImageFilterModule 模块裁剪过大的图片到指定大小,这个nginx自带的模块是默认关闭的,所以需要重新编译nginx加上此模块。 一、编译 nginx 1.查看 nginx 模块 由于nginx 是之前装好的,这里需要先看一下是否安装了H…...

detach,主线程终止后子线程会结束吗
此前,我对detach的理解是,当主线程退出后,子线程能够继续存在。实际上,当主线程退出后,子线程也随之结束了。先看一个例子: #include <iostream> #include <thread> #include <unistd.h>…...

2023年云计算的发展趋势如何?还值得学习就业吗?
一、2023年云计算的发展将迎来新篇章 随着政策的正式放开,2023年的经济开始慢慢复苏,云计算在疫情期间支撑了复工复产,那么在今年对于云计算发展的限制将进一步的放开。Gartner的数据显示,到2023年,全球公共云支出将达…...
ROS2 入门应用 请求和应答(C++)
ROS2 入门应用 请求和应答(C)1. 创建功能包2. 创建源文件2.1. 服务端2.2. 客户端3. 添加依赖关系4. 添加编译信息4.1. 添加搜索库4.2. 增加可执行文件4.3. 增加可执行文件位置5. 编译和运行1. 创建功能包 在《ROS2 入门应用 工作空间》中已创建和加载了…...
华为机试题:HJ73 计算日期到天数转换(python)
文章目录博主精品专栏导航知识点详解1、input():获取控制台(任意形式)的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方法2、print() :打印输出。3、整型int() :将指定进制…...

将springboot项目生成可依赖的jar,并引入到项目中
1、将springboot项目生成可依赖的jar包的方法 SpringBoot项目默认打包的是可运行jar包,也可以打包成不可运行的jar包。 能打成可运行的jar包是因为,Spring Boot 项目引入了 spring-boot-maven-plugin 依赖包。 spring-boot-maven-plugin具有repackage …...
小红书搜索关键词布局指南,这4种词一定要把握好
在小红书搜索关键词布局,是提升搜索推流的重要方法,今天跟你讲清楚小红书搜索关键词布局怎么做~做小红书的都知道,小红书的主要流量来源一个是推荐,另一个就是搜索,关键词决定了你的精准人群,那…...

安全研发人员能力模型窥探
能力 是一个比较抽象的概念,不同的行业、管理者、研发人员对能力的认知都会有差异。另外,作为研发团队的相应的职级定级、绩效考核的基础,一个“大家普遍认可”的能力的模型是非常重要的。这是比职级模型更高层的一个基本模型,所谓…...

【面试总结】Linux篇·操作及原理篇
【面试总结】Linux篇原理篇1.介绍一下inode2.说一下Linux系统的目录结构3.说一下Linux系统的文件类型4.如何在Linux上配置一个IP地址5.Linux负载是什么?6.Linux中的软链接和硬链接有什么区别?1.介绍一下inode 硬盘的最小存储单位是扇区(Sector)…...

C++中如何实现用异或运算找出数组中只出现一次的数字???
文章目录1、异或运算符的运算1、异或运算符的运算 问题描述: 给出一个指定的数组,只有一个数出现一次,剩下都出现两次,找出出现一次的数字。指定数组为[1,2,2,1,3,4,3]。 样例输出:4 #include<iostream> using…...

红黑树的历史和由来。
一个数组,1,2,3,4,5,...n; 一共n个数字。1、直接查找想要查询第n个数字,直接搜索,就是n次查询。ps:那么问题来了,这样查询也太慢了,有什么改进的呢?2、二分查找这个时候,二分查找更快。不过就是…...

蓝库云|制造业数字化转型为何转不动?资料处理很重要
数字化转型已经成为每个产业势在必行的课题,没有人会怀疑数字化技术与科技能解放的生产力能量,但为什么看似美好的愿景,实行起来却如此缓慢?蓝库云认为这是因为没有盖好「资料治理」的地基。 面对不断变化的法令规范要求…...
【python学习笔记】 :Lambda 函数
Lambda 函数是 Python 中的匿名函数。有些人将它们简称为lambdas,它们的语法如下: lambda arguments: expressionlambda 关键字可以用来创建一个 lambda 函数,紧跟其后的是参数列表和用冒号分割开的单个表达式。例如,lambda x: 2…...
Nginx的proxy buffer参数设置
1. proxy_buffering 语法:proxy_buffering on|off 默认值:proxy_buffering on 上下文:http,server,location作用:该指令开启从后端被代理服务器的响应body缓冲。 如果proxy_buffering开启,nginx假定被代理的后端服务器会以最…...

SPI简介与实例分析
SPI简介 SPI 协议是由Motorola提出的通讯协议 (Serial Peripheral Interface) ,是一种高速全双工的串行通信总线。 SPI 通讯使用 3 条总线 :SCK、 MOSI、 MISO ,以及若干片选线(SS、CS、NSS)。 主机要和哪个从机通信,就把对应的…...
通过基于pgsql的timescaleDB的time_bucket函数实现自定义聚合粒度
1、自己写的不完全满足要求的实现方式 with tb_tmp as (select *, //计算该时间距离第一天有多少天((extract(epoch from create_time) /3600/24)::integer) as ct_ifrom test.test_salary )select min(a.create_time) as create_time,sum(a.salary) from (select *,//移动数据…...

一台电脑安装26个操作系统(windows,macos,linux)
首先看看安装了哪些操作系统1-4: windows系统 四个5.Ubuntu6.deepin7.UOS家庭版8.fydeOS9.macOS10.银河麒麟11.红旗OS12.openSUSE Leap13.openAnolis14.openEuler(未安装桌面UI)15.中标麒麟(NeoKylin)16.centos17.debian Edu18.fedora19.oraclelinux20.R…...
dockerfile文件
dockerfile文件内容 Form ip端口/centos:regular ENV JAVA_HOME /E:/Program Files/Java/jdk1.8.0_351 ENV PATH $JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 WORKDIR /opt COPY target/fast.jar /op…...
视觉SLAM ch11回环检测
回环检测的关键:如何有效的检测出相机经过同一个地方。如果成功的检测到可以为后端的位姿图提供更多有效数据,得到全局一致的估计。 回环检测提供了当前数据和所有历史数据的关联,还可以用回环检测进行重定位。 具体方法: 一&am…...

关于Ubuntu20.04文件系统思考
文章目录问题产生Ubuntu文件系统中普通用户可读写地址Ubuntu文件系统Ubuntu文件系统详解一级目录二级目录查找Ubuntu中软件安装位置Ubuntu修改文件权限问题产生 使用electron框架开发桌面端跨平台软件时,当开发完成的程序部署到Ubuntu上,系统无法产生日…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...