快速压缩图片方法(小白篇)
方法 快速 图片 压缩
2023-09-11 14:18:06 时间
0 适用场景
批量上传图片到云服务器(例如七牛云),但不需要用这么高清的图片。
例如发文章在得物,小红书等平台时。
1 前提
-
操作系统:windows 64位
-
ImageMagick版本:v7
-
安装bash环境,可以直接下载git安装包含bash环境
-
下载地址(官网):
-
下载地址2:
-
-
注意事项:脚本文件名不能是中文
2 脚本
2.1 核心代码
#批量把当前目录的jpg图片 分辨率下降至25%,质量下降一半成像 #假定文件名:batchCompressImagesIncludeSubFiles5050.sh magick *.jpg -resize 50% -quality 50 op_%03d.jpg
2.2 批量处理
说明:批量处理指定文件夹及子文件夹所有图片
2.2.1 带参数
指定目录及分辨率及质量三个参数
文件名:batchCompressImagesIncludeSubFilesWithParams.sh
#!/bin/bash read_dir(){ echo 'start walk through dir of'$1 suffixJpg='.jpg' suffixJpeg='.jpeg' suffixPng='.png' for file in `ls -a $1` do if [ -d $1"/"$file ] then if [[ $file != '.' && $file != '..' ]] then read_dir $1"/"$file fi else echo $1"/"$file if [[ ${file:0-4:4} == ${suffixJpg} || ${file:0-5:5} == ${suffixJpeg} ]] then magick $1"/"$file -resize $2% -quality $3% $1"/"op_$file fi if [[ ${file:0-4:4} == ${suffixPng} ]] then magick $1"/"$file -resize $2% -quality $3% $1"/"op_$file.jpg fi fi done echo 'walk complete for dir of'$1 } read_dir $1 $2 $3
2.2.1 简化版
指定目录
文件名:batchCompressImagesIncludeSubFiles5050.sh
#!/bin/bash read_dir(){ suffixJpg='.jpg' suffixJpeg='.jpeg' suffixPng='.png' for file in `ls -a $1` do if [ -d $1"/"$file ] then if [[ $file != '.' && $file != '..' ]] then read_dir $1"/"$file fi else echo $1"/"$file if [[ ${file:0-4:4} == ${suffixJpg} || ${file:0-5:5} == ${suffixJpeg} ]] then magick $1"/"$file -resize 50% -quality 50 $1"/"op_$file fi if [[ ${file:0-4:4} == ${suffixPng} ]] then magick $1"/"$file -resize 50% -quality 50 $1"/"op_$file.jpg fi fi done } read_dir $1
文件名:runCompressSubFiles.sh
#.代表当前所在目录 batchCompressImagesIncludeSubFiles5050.sh .
3 使用及效果
3.1 使用样例
-
打开git bash
-
输入runCompressSubFiles onedir
-
3.2 效果
压缩后的图片和原图,眼睛上看差别几乎没有(由于现在手机拍照像素高,拍出来5M起)。
文件名 | 原图大小 | 压缩后大小 | 压缩率 |
---|---|---|---|
four.jpg | 9282 KB | 307 KB | 3.31% |
one.jpg | 6433 KB | 364 KB | 5.66% |
two.png | 24846 KB | 739 KB | 2.97% |
four.jpg
op_four.jpg
4 参考
无
相关文章
- tp5 中 model 的更新方法
- 达梦数据库使用disql登录, 密码包含特殊字符(@)的处理方法
- VS2015中添加新建项,找不到ado .net entity datamodel的解决方法
- c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)
- SQL Server类型转换方法
- strtok在keil中使用小笔记及字符串转换为多个浮点数的方法
- Go 了解方法运用
- 想要快速准备好性能数据?方法这不就来了!
- 测试人员必会用例设计方法--正交表
- 运维前线:一线运维专家的运维方法、技巧与实践2.5 使用Django快速构建CMDB系统
- CSDN日报20170828——《4个方法快速打造你的阅读清单》
- DBSAT脚本快速收集方法
- java-成员方法/变量、类方法/变量等区别
- 《圣殿祭司的ASP.NET4.0专家技术手册》----2-12 扩展方法
- 《贝叶斯方法:概率编程与贝叶斯推断》一第1章 贝叶斯推断的哲学1.1 引言
- 提高效率四方法
- Python 三国人物数据快速采集极简方法汇总
- 数据结构:先进排序方法之快速排序
- DALL-E 如何让您的思想在几帧快速生成(教程含方法)
- 《软件建模与设计: UML、用例、模式和软件体系结构》一一1.4 方法和表示法
- Java 反射机制快速入门及常见方法全归纳。
- 教大家一个快速截图的好方法
- 类变量(静态变量),静态方法(类方法)快速了解一篇足矣
- [Oracle]快速构造大量数据的方法
- 【SystemVerilog基础】基于覆盖率驱动(CDV)的验证方法快速上手指南
- 快速备份sqlserver2005以上版本数据库的方法-摘自网络
- Socket的常用方法。
- NIO基础方法一