FFMPEG脚本自动调整图片尺寸和质量

当你需要管理大量图片,特别是为了网页使用或存储优化时,批量处理图片可以极大地节省时间。这个脚本利用 ffmpeg,一个强大的多媒体框架,自动调整目录中图片的尺寸和质量。本教程将指导你如何使用这个脚本。

一、前提条件

  • 确保你的系统已安装 ffmpeg。它支持Windows、macOS和Linux。访问 ffmpeg官网 下载并安装。
  • 基本的批处理脚本和命令行操作知识。

二、Windows bat

@echo off
setlocal enabledelayedexpansion

:: 设置默认值
set DEFAULT_MAX_WIDTH=1280
set DEFAULT_MAX_HEIGHT=720
set DEFAULT_QUALITY_SCALE=2

:: 检查参数,若未提供,则使用默认值
if "%~1"=="" (
    set MAX_WIDTH=%DEFAULT_MAX_WIDTH%
) else (
    set MAX_WIDTH=%1
)

if "%~2"=="" (
    set MAX_HEIGHT=%DEFAULT_MAX_HEIGHT%
) else (
    set MAX_HEIGHT=%2
)

if "%~3"=="" (
    set QUALITY_SCALE=%DEFAULT_QUALITY_SCALE%
) else (
    set QUALITY_SCALE=%3
)

:: 创建temp文件夹
if not exist "temp" mkdir temp

:: 对当前目录下的所有图片文件进行处理
for %%f in (*.jpg *.jpeg *.png) do (
    echo Processing and possibly overwriting: %%f
    :: 适用于大多数图片格式的质量和尺寸调整命令,自动覆盖输出目录中的同名文件
    ffmpeg -i "%%f" -vf "scale='min(%MAX_WIDTH%\,iw):-1',scale='trunc(oh*a/2)*2:min(%MAX_HEIGHT%\,ih)'" -qscale:v %QUALITY_SCALE% "temp/%%f" -y
)

echo Done.

使用说明

  1. 将脚本保存为 .bat 文件,例如 resizeImages.bat
  2. 在包含图片的目录中按住Shift+鼠标右键打开终端PowerShell / cmd
  3. 执行脚本,可选地指定最大宽度、最大高度和质量比例值。例如:
resizeImages.bat 1920 1080 2

这个命令将图片尺寸调整为最大宽度1920像素,最大高度1080像素,质量比例为2。

如果未指定参数,直接双击运行该bat,则会使用默认值最大宽度1280,最大高度720,质量比例为2进行

三、Linux / Mac

#!/bin/bash

# 设置默认值
DEFAULT_MAX_WIDTH=1280
DEFAULT_MAX_HEIGHT=720
DEFAULT_QUALITY_SCALE=2

# 检查参数,若未提供,则使用默认值
MAX_WIDTH=${1:-$DEFAULT_MAX_WIDTH}
MAX_HEIGHT=${2:-$DEFAULT_MAX_HEIGHT}
QUALITY_SCALE=${3:-$DEFAULT_QUALITY_SCALE}

# 创建temp文件夹
if [ ! -d "temp" ]; then
  mkdir temp
fi

# 处理当前目录下的所有图片
for f in *.jpg *.jpeg *.png; do
  echo "Processing and possibly overwriting: $f"
  ffmpeg -i "$f" -vf "scale='min($MAX_WIDTH,iw):-1',scale='trunc(oh*a/2)*2:min($MAX_HEIGHT,ih)'" -q:v $QUALITY_SCALE "temp/$f"
done

echo "Done."

使用说明

  1. 将上述脚本保存为文件,例如 resizeImages.sh
  2. 打开终端,并使用 cd 命令导航到包含图片和脚本的目录。
  3. 确保脚本具有可执行权限。可以通过在终端执行以下命令来赋予权限:
chmod +x resizeImages.sh
  1. 使用脚本时,可以指定最大宽度、最大高度和质量比例作为参数。如果不指定,脚本将使用默认值。运行脚本的命令如下:
./resizeImages.sh 1920 1080 2

执行后:

这会将当前目录下所有的 .jpg.jpeg.png 文件调整至最大1920像素宽、1080像素高,质量比例为2,并将处理后的图片保存在 temp 文件夹中。

PS:实际上是因为本子尺寸太大,要放在私有网盘中发现加载问题太慢(云服务器带宽鸡肋)所以才....
最后修改:2024 年 04 月 02 日
喜欢就请我喝一杯奶茶吧~