#!/bin/bash # 需要压缩的大图片列表 IMAGES=( "CoverImage.png" "BasicImage.png" "teams-image.png" "hand-background.png" "basic-auth.png" "BgMusicCard.png" "Landing2.png" "Landing3.png" "Landing1.png" "smart-home.png" "automotive-background-card.png" ) IMG_DIR="src/assets/img" BACKUP_DIR="$IMG_DIR/original-backup" echo "🎨 开始优化图片..." echo "================================" total_before=0 total_after=0 for img in "${IMAGES[@]}"; do src_path="$IMG_DIR/$img" if [ ! -f "$src_path" ]; then echo "⚠️ 跳过: $img (文件不存在)" continue fi # 备份原图 cp "$src_path" "$BACKUP_DIR/$img" # 获取原始大小 before=$(stat -f%z "$src_path" 2>/dev/null || stat -c%s "$src_path" 2>/dev/null) before_kb=$((before / 1024)) total_before=$((total_before + before)) # 使用sips压缩图片 (降低质量到75, 减少分辨率如果太大) # 获取图片尺寸 width=$(sips -g pixelWidth "$src_path" | grep "pixelWidth:" | awk '{print $2}') # 如果宽度大于2000px,缩小到2000px if [ "$width" -gt 2000 ]; then sips -Z 2000 "$src_path" > /dev/null 2>&1 fi # 获取压缩后大小 after=$(stat -f%z "$src_path" 2>/dev/null || stat -c%s "$src_path" 2>/dev/null) after_kb=$((after / 1024)) total_after=$((total_after + after)) # 计算节省 saved=$((before - after)) saved_kb=$((saved / 1024)) percent=$((100 - (after * 100 / before))) echo "✅ $img" echo " ${before_kb} KB → ${after_kb} KB (⬇️ ${saved_kb} KB, -${percent}%)" done echo "" echo "================================" echo "📊 总计优化:" total_before_mb=$((total_before / 1024 / 1024)) total_after_mb=$((total_after / 1024 / 1024)) total_saved=$((total_before - total_after)) total_saved_mb=$((total_saved / 1024 / 1024)) total_percent=$((100 - (total_after * 100 / total_before))) echo " 优化前: ${total_before_mb} MB" echo " 优化后: ${total_after_mb} MB" echo " 节省: ${total_saved_mb} MB (-${total_percent}%)" echo "" echo "✅ 图片优化完成!" echo "📁 原始文件已备份到: $BACKUP_DIR"