---
name: Image Compression
slug: image-compression
category: Frontend
description: Image Compression is a local tool for batch compressing, resizing, and converting images between JPG, PNG, and WebP formats without sending files to a server. Use it before sharing images via email or chat to reduce file size.
github: "https://github.com/dongsheng123132/u-claw/tree/main/portable/skills-cn/image-compress"
language: HTML
stars: 1725
forks: 414
install: "npx degit https://github.com/dongsheng123132/u-claw/tree/main/portable/skills-cn/image-compress ~/.claude/skills/image-compress"
installs_to: ~/.claude/skills/image-compress
source_path: portable/skills-cn/image-compress/SKILL.md
collection_size: 17
category_size: 567
collection_url: "https://dirskills.com/collections/dongsheng123132/u-claw"
added: 2026-08-19T07:25:57.227Z
last_synced: 2026-08-19T07:25:57.227Z
canonical_url: "https://dirskills.com/skills/image-compression"
---

# Image Compression

Image Compression is a local tool for batch compressing, resizing, and converting images between JPG, PNG, and WebP formats without sending files to a server. Use it before sharing images via email or chat to reduce file size.

**Install:**

```bash
npx degit https://github.com/dongsheng123132/u-claw/tree/main/portable/skills-cn/image-compress ~/.claude/skills/image-compress
```

## README

# 图片压缩 / 转换

帮用户压缩图片体积、调整尺寸、转换格式，全部本地处理，照片不外传。

## 能力概述

- **压缩**：降低体积（控制质量/分辨率），适合发邮件、传微信
- **改尺寸**：按宽高或百分比缩放
- **转格式**：jpg / png / webp 互转（webp 体积最小）
- **批量**：处理整个文件夹

## 操作方式

用 Bash 工具，Python 的 Pillow 库（跨平台、纯本地）：

```bash
python -c "import PIL" 2>/dev/null || pip install -q Pillow

# 单张压缩（质量 75，宽度限制 1600px 等比缩放）
python - <<'PY'
from PIL import Image
im = Image.open("input.jpg")
if im.width > 1600:
    im = im.resize((1600, int(im.height*1600/im.width)))
im.convert("RGB").save("output.jpg", "JPEG", quality=75, optimize=True)
print("已压缩 -> output.jpg")
PY

# 批量：当前目录所有 jpg/png -> webp（体积更小）
python - <<'PY'
from PIL import Image
import glob, os
for f in glob.glob("*.jpg") + glob.glob("*.png"):
    out = os.path.splitext(f)[0] + ".webp"
    Image.open(f).save(out, "WEBP", quality=80)
    print(f"{f} -> {out}")
PY
```

## 使用建议

- 处理前 `ls -lh` 看原图体积，处理后再 `ls -lh` 对比，告诉用户压缩了多少
- 默认不覆盖原图（输出新文件名），除非用户明确要求覆盖
- 含透明通道的 PNG 转 JPG 会丢透明，转 webp 可保留——按需选格式
