centos7使用imagemagick的convert命令压缩图片脚本

简介:

yum install ImageMagick

vi imagemagick

#!/bin/bash

#author:king

#time:20160725

#找出当前目录下大于20K的图片按照宽200,高随图片样式等比缩放,图片名称不变

find ./ -regex '.*\(jpg\|JPG\|png\|PNG\|jpeg\)' -size +20k -exec convert -resize 200x {} {} \;


参考:

本人管的一台阿里云服务器由于空间的带宽才只有1MB,图片一多,网站打开就慢,真是蛋疼啊,在不增加带宽的情况只有通过系统让图片更小,这样可以加快速度了,真是人穷就没办法啊。而且压缩图片还可以节省服务器空间,相必也是极好极好的。

安装imagemagick

1

yum install imagemagick

imagemagick的命令convert可以完成此任务,其参数-resize用来改变图片尺寸,可以直接指定像素值,也可以指定缩放百分比。而如果想降低图片的质量,可以用convert的-quality参数,质量值为0-100之间的数值,数字越大,质量越好,一般指定70-80,基本上看不出前后的差别。

我们首先要获取图片,自然find命令:

find ./ -regex '.*\(jpg\|JPG\|png\|jpeg\)' -size +500k


统计下数量可对:

find ./ -regex '.*\(jpg\|JPG\|png\|jpeg\)' -size +500k | wc -l


执行convert 压缩:

find ./ -regex '.*\(jpg\|JPG\|png\|jpeg\)' -size +500k -exec convert -resize 50%x50% {} {} \;


或者限定大小:

find ./ -regex '.*\(jpg\|JPG\|png\|jpeg\)' -size +500k -exec convert -resize 800x800 {} {} \;

convert 是会自动按照最大尺寸等比例进行缩小的。

用规则表达式把jpg和JPG后缀图片一网打尽,{}代表查找到的文件,这里没有改变convert前后的文件名,最后是转义的分号表示一个迭代的处理完成。


缩小图片质量为50:

convert -resize 800x800 -quality 50 1405407568-633.jpg 800.jpg

整合下命令我就不说了,呵呵。。。

加上shell脚本每天定时操作,哈哈,爽 的一塌糊涂。



追加配置:

先实现centos7本机目录同步,再对该目录下所有图片进行裁剪,然后写入crontab每秒运行,测试之后发现删除不能实现同步

vi copy.sh

rsync -vzrtopgu –progress /opt/king-picture/work/king-0.0.0.0-1111-picture.war-_picture-any-/webapp/uploads/ /opt/king-picture/work/king-0.0.0.0-1111-picture.war-_picture-any-/webapp/min/uploads


vi imagemagick

#!/bin/bash

find /opt/king-picture/work/king-0.0.0.0-1111-picture.war-_picture-any-/webapp/min/uploads/ -regex '.*\(jpg\|JPG\|png\|PNG\|jpeg\)' -size +20k -exec convert -resize 200x {} {} \;


crontab -e

* * * * * sleep 1; /opt/copy.sh

* * * * * sleep 3; /opt/imagemagick



本文转自 guowang327 51CTO博客,原文链接:http://blog.51cto.com/guowang327/1829959,如需转载请自行联系原作者

相关文章
|
1月前
|
Linux 网络安全
Centos 防火墙端口控制命令
Centos 防火墙端口控制命令
42 3
|
2月前
|
Linux
CentOS 安装rz和sz命令
CentOS 安装rz和sz命令
23 0
|
2月前
|
Linux
Centos7使用man查找命令时,报错No manual entry for xxxx
Centos7使用man查找命令时,报错No manual entry for xxxx
14 0
|
3天前
|
Linux
Centos 常见的命令
Centos 常见的命令
6 0
|
5天前
|
Web App开发 缓存 运维
CentOS命令大全:从入门到精通
CentOS命令大全:从入门到精通
|
5天前
|
关系型数据库 MySQL Shell
在Centos7中利用Shell脚本:实现MySQL的数据备份
在Centos7中利用Shell脚本:实现MySQL的数据备份
|
5天前
|
监控 网络协议 Linux
centos常见的命令
【5月更文挑战第8天】了解和掌握基本的CentOS命令对于服务器管理至关重要。本文介绍了19个常用命令,包括`ls`、`cd`、`mkdir`、`rm`、`grep`、`find`、`sudo`、`vi/vim`、`cp/mv`、`du/df`、`history`、`top/htop`、`ps`、`netstat/ss`、`yum/dnf`、`ssh`、`iptables`、`journalctl`、`crontab`和`systemctl`。每个命令都提到了常见问题、使用技巧和避免错误的方法,帮助用户更好地管理和维护CentOS系统。
20 0
|
14天前
|
Linux Shell 数据安全/隐私保护
centos常见的命令
CentOS 是一个基于 Red Hat Enterprise Linux (RHEL) 的免费企业级操作系统。以下是一些基本的 CentOS 命令,用于日常管理和操作:
|
17天前
|
XML 安全 Linux
【Linux】深入探究CentOS防火墙(Firewalld):基础概念、常用命令及实例操作
【Linux】深入探究CentOS防火墙(Firewalld):基础概念、常用命令及实例操作
|
19天前
|
Java Shell 应用服务中间件
centos7_tomcat开机自启的shell脚本参考
centos7_tomcat开机自启的shell脚本参考
16 0