【批量处理tiff文件生成jpg缩略图】

推荐用 Python + Pillow 库,一行命令搞定。


方案一:Python 脚本(最灵活)

python 复制代码
from PIL import Image
import os
from pathlib import Path

# 配置
input_dir = r"C:\你的TIFF文件夹路径"
output_dir = r"C:\输出JPG缩略图路径"
thumb_size = (256, 256)  # 缩略图尺寸,可改
jpg_quality = 85         # JPG质量 1-100

os.makedirs(output_dir, exist_ok=True)

for file in Path(input_dir).glob("*.tif*"):  # 匹配 .tif 和 .tiff
    img = Image.open(file)
    img.thumbnail(thumb_size, Image.LANCZOS)  # 等比缩放,不变形
    
    # 转RGB(TIFF可能是CMYK/灰度,JPG不支持)
    if img.mode not in ('RGB', 'L'):
        img = img.convert('RGB')
    
    output_path = os.path.join(output_dir, file.stem + ".jpg")
    img.save(output_path, "JPEG", quality=jpg_quality)
    print(f"✓ {file.name} → {output_path}")

print("全部完成")

运行前安装

bash 复制代码
pip install Pillow

方案二:ImageMagick 命令行(最快)

如果装了 ImageMagick,一行命令:

bash 复制代码
magick mogrify -path ./output -resize 256x256 -format jpg -quality 85 *.tif

关键细节

问题 处理方式
TIFF是CMYK色彩 必须转RGB,否则JPG颜色异常
TIFF是多页/多帧 Image.open() 默认只读第一页,多页需用 ImageSequence
保持等比不拉伸 thumbnail() 而非 resize()
文件名冲突 脚本用 file.stem 避免覆盖

如果TIFF是多页的

上面脚本只处理第一页。如果需要每页都生成缩略图:

python 复制代码
from PIL import ImageSequence

for i, page in enumerate(ImageSequence.Iterator(img)):
    page.thumbnail(thumb_size, Image.LANCZOS)
    page = page.convert('RGB') if page.mode not in ('RGB', 'L') else page
    page.save(f"{output_dir}/{file.stem}_page{i}.jpg", "JPEG", quality=jpg_quality)

二、其他方法


一、GUI 工具(零代码,最快上手)

工具 平台 特点
XnConvert Win/Mac/Linux 免费,拖拽批量,支持多页TIFF,可设输出尺寸
IrfanView Windows 轻量,Batch Conversion 功能,免费
FastStone Windows 选文件→批量转换→设尺寸→输出,三步搞定
Adobe Bridge 全平台 选中多个TIFF → 工具 → Photoshop → 图像处理器

推荐 XnConvert,免费、支持多页TIFF、可自定义缩略图尺寸,比写代码快得多。


二、系统自带命令(不装任何东西)

macOS

bash 复制代码
# 批量转JPG + 缩放到256px
mkdir -p output
for f in *.tif *.tiff; do
  sips -Z 256 --out output/"${f%.*}.jpg" "$f"
done

Windows PowerShell(不装软件)

powershell 复制代码
mkdir output -Force
Get-ChildItem *.tif*,*.tiff | ForEach-Object {
    $img = [System.Drawing.Image]::FromFile($_.FullName)
    $thumb = New-Object System.Drawing.Bitmap 256, 256
    $graphics = [System.Drawing.Graphics]::FromImage($thumb)
    $graphics.DrawImage($img, 0, 0, 256, 256)
    $thumb.Save("output\$($_.BaseName).jpg", [System.Drawing.Imaging.ImageFormat]::Jpeg)
    $img.Dispose(); $thumb.Dispose(); $graphics.Dispose()
}

缺点:Windows自带的对CMYK TIFF支持差,颜色可能偏。


三、命令行工具(比Python快,比ImageMagick轻)

libvips(速度最快,内存占用最低)

bash 复制代码
# 安装
brew install vips        # Mac
apt install libvips-tools # Ubuntu

# 批量处理
vips thumbnail "*.tif[page=0]" 256 --format jpg --quality 85 -o output/"%s.jpg"

处理1000张图比Pillow快5-10倍,尤其适合大文件。

GraphicsMagick(ImageMagick的轻量分支)

bash 复制代码
gm mogrify -path ./output -resize 256x256 -format jpg -quality 85 *.tif

四、在线批量转换(不想装任何东西)

网站 限制
CloudConvert 免费25次/天,支持多页TIFF
Convertio 每次最多100MB,免费用户有限制
IloveIMG 简单批量,无尺寸控制

适合文件量少、不涉及隐私的场景。


选哪个?

你的情况 推荐
不想写代码,偶尔用 XnConvert
Mac用户,不想装东西 sips 命令
文件量大(上千张) libvips
已经装了ImageMagick 直接用 magick mogrify
不想装任何软件,Windows PowerShell 脚本(颜色可能不准)
相关推荐
毛驴赶鹿1 小时前
【金仓数据库征文】KES V9性能调优实战记录:从慢SQL排查到全链路优化
数据库·sql
leoZ2311 小时前
本地跑大模型实战(七):llama.cpp 性能调优,让推理更快更省
java·人工智能·spring·生成对抗网络·语言模型·自然语言处理·llama
To_OC1 小时前
我把《天龙八部》塞进向量数据库后,终于搞懂了 RAG 到底是个啥
人工智能·llm·agent
码农阿豪2 小时前
【金仓数据库征文】Mac开发环境|SpringBoot3 + MyBatisPlus对接KES V9 Docker实战全指南
数据库·macos·docker
蜡台2 小时前
AI Agent(智能体)入门基础教程
人工智能
杨云龙UP2 小时前
MySQL 数据库常用备份工具对比:mysqldump、mydumper 与 XtraBackup
linux·运维·服务器·数据库·mysql·dba·备份恢复
ZENERGY-众壹2 小时前
500个工商业电站压垮数据库?海量光伏时序数据存储的架构取舍
数据库·架构·influxdb·光伏·光伏运维
傻啦嘿哟2 小时前
某短视频平台视频爬虫实战:抓取推荐流视频信息,绕过反爬的3种技巧
开发语言·爬虫·python
Akir.weiwen2 小时前
Token 层差异:从颜色值到语义状态的三层跃迁
人工智能·设计规范
迷迭香yy2 小时前
集合竞价数据挖掘实战:用Python构建开盘信号识别系统
人工智能·python·数据挖掘