惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LangChain Blog
WordPress大学
WordPress大学
H
Help Net Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Y
Y Combinator Blog
Blog — PlanetScale
Blog — PlanetScale
MyScale Blog
MyScale Blog
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
云风的 BLOG
云风的 BLOG
博客园 - 【当耐特】
P
Proofpoint News Feed
D
DataBreaches.Net

博客园 - imzhi

VS Code 1.86.1 Requires glibc 2.28 or Later vscode 多个光标自动生成从0开始的数字 js 处理 19.9*0.95 浮点数精度问题的正确姿势,不引入第三方库 ssh 无法用密钥登录 send_pubkey_test: no mutual signature algorithm iqoo手机关掉视频彩铃 pc.vivo.com vivo办公套件网页,拼图验证失败的原因 公司自有服务器无法请求在指向自己服务器的其他域名的API 【转】Cialdini Quiz Explained 机械革命code01 v2.0 开机黑屏,电源键是亮着的 html table表格导入excel文件的方法 php实现数字转中文大写金额表示 微信支付api 付款到银行卡v2 商家转账v3 openssl3.0 php 使用 openssl_encrypt des-ecb 加密报错 error:0308010C:digital envelope routines::unsupported php pdo 写入 sqlserver image类型字段的写法 连接位置国外的远程桌面,使用anydesk thinkphp console 命令行打印错误调用堆栈 【gpt搬运】bash脚本压缩png,jpg图片,当图片大小大于100kb的时候 win10系统休眠、睡眠、关机后进入假死状态的解决方案 如何返回“无法访问此网站,网页可能暂时无法连接,或者它已经永久性地移动到了新网址” dbeaver 升级 24.1.x 版本提示 An error has occurred 的解决
【gpt搬运】bash脚本压缩png,jpg图片,当图片大小大于60kb或...
imzhi · 2024-10-12 · via 博客园 - imzhi

在这个任务中,Bash 脚本需要检查图片的文件大小和尺寸(宽度和高度),然后决定是否压缩图片。我们可以继续使用 jpegoptimpngquant 来压缩 .jpg.png 图片。为了检查图片的尺寸,使用 imagemagickidentify 命令来获取宽度和高度。

准备工具:

  • 安装 imagemagick:用于检查图片的宽高和处理图片。
  • 安装 jpegoptim:用于压缩 .jpg 图片。
  • 安装 pngquant:用于压缩 .png 图片。

安装命令(适用于 Debian/Ubuntu 系列 Linux):

sudo apt-get update
sudo apt-get install imagemagick jpegoptim pngquant

脚本内容:

#!/bin/bash

# 压缩JPG图片
compress_jpg() {
    local file="$1"
    echo "压缩JPG文件: $file"
    jpegoptim --max=85 "$file"  # 将质量降低到85%,根据需要调整
}

# 压缩PNG图片
compress_png() {
    local file="$1"
    echo "压缩PNG文件: $file"
    pngquant --ext .png --force 128 "$file"  # 将颜色数量减少到128
}

# 检查文件大小和尺寸
check_and_compress() {
    local file="$1"
    
    # 获取文件大小
    filesize=$(stat -c%s "$file")
    
    # 获取图片的宽高信息 (使用ImageMagick的identify)
    dimensions=$(identify -format "%w %h" "$file")
    width=$(echo $dimensions | cut -d' ' -f1)
    height=$(echo $dimensions | cut -d' ' -f2)
    
    # 检查文件大小是否大于60KB,或者宽高是否大于500px
    if [ $filesize -gt 61440 ] || [ $width -gt 500 ] || [ $height -gt 500 ]; then
        echo "文件大小或尺寸超过限制,进行压缩: $file"
        
        # 根据文件类型调用不同的压缩方法
        if [[ $file == *.jpg || $file == *.jpeg ]]; then
            compress_jpg "$file"
        elif [[ $file == *.png ]]; then
            compress_png "$file"
        fi
    else
        echo "$file 大小和尺寸均符合要求,无需压缩"
    fi
}

# 查找并处理图片
find . \( -name "*.png" -o -name "*.jpg" -o -name "*.jpeg" \) -type f | while read file; do
    check_and_compress "$file"
done

echo "压缩完成!"

脚本说明:

  1. check_and_compress 函数

    • 获取图片文件大小(字节为单位)。
    • 使用 identify 获取图片的宽度和高度。
    • 检查图片的大小是否大于 60KB,或宽度/高度是否大于 500px。
    • 如果条件满足,调用 compress_jpgcompress_png 进行压缩。
  2. 压缩函数

    • .jpg 文件使用 jpegoptim 进行压缩,降低质量到 85%。
    • .png 文件使用 pngquant 进行压缩,颜色减少到 128 色。
  3. 查找和处理

    • 使用 find 查找当前目录下的 .jpg, .jpeg, .png 文件。
    • 对每个文件调用 check_and_compress 进行检查和压缩。

使用方法:

将脚本保存为 compress_images.sh,然后给予执行权限并运行:

chmod +x compress_images.sh
./compress_images.sh