Skip to content
← 返回文件与文本处理列表
文件与文本处理任务与配置

命令与脚本:图片、音视频与文档 · 转换、比较、批处理与拼接图像至优化图像体积 ​

返回分篇目录

转换、比较、批处理与拼接图像 ​

先看 magick 通用入口,再按格式转换、差异比较、批量修改与网格拼接查对应子命令;FFmpeg 处理音视频转换。

magick · 创建,编辑,组合,转换不同格式的图片文件 ​

这个工具在 ImageMagick 7 以上版本中代替了原 convert 命令,如需在 7+ 版本中使用原命令,请查看 magick convert。 此命令也有关于其子命令的文件,例如:mogrify。 更多信息:https://imagemagick.org/script/magick.php。

  • 转换图片格式:
bash
magick {{路径/到/输入图片.png}} {{路径/到/输出图片.jpg}}
  • 改变图片大小,生成新的副本:
bash
magick {{路径/到/输入图片.jpg}} -resize {{100x100}} {{路径/到/输出图片.jpg}}
  • 利用当前目录下的所有 JPEG 图片生成一个 GIF 动图:
bash
magick {{*.jpg}} {{路径/到/GIF文件.gif}}
  • 生成棋盘格图片:
bash
magick -size {{640x480}} pattern:checkerboard {{路径/到/棋盘格图片.png}}
  • 利用当前目录下的所有 JPEG 图片生成一个 PDF 文件:
bash
magick {{*.jpg}} -adjoin {{路径/到/PDF文件.pdf}}

magick convert · 转换图片格式,创建,组合图片,调整图片尺寸等功能 ​

注意:原命令 convert 在 ImageMagick 7 以上版本中已被替换为 magick。 更多信息:https://imagemagick.org/script/convert.php。

  • 将 JPEG 图片转换为 PNG 图片:
bash
magick convert {{路径/到/输入图片.jpg}} {{路径/到/输出图片.png}}
  • 将图片调整至原图片尺寸的50%:
bash
magick convert {{路径/到/输入图片.png}} -resize 50% {{路径/到/输出图片.png}}
  • 在宽高都不超过 640x480 的限制下,保持图片的比例,将尺寸调整至最大:
bash
magick convert {{路径/到/输入图片.png}} -resize 640x480 {{路径/到/输出图片.png}}
  • 将图片调整至特定文件大小:
bash
magick convert {{路径/到/输入图片.png}} -define jpeg:extent={{512kb}} {{路径/到/输出图片.jpg}}
  • 竖直(-append)/水平(+append)地排列图片:
bash
magick convert -background none {{路径/到/图片1.png 路径/到/图片2.png ...}} {{-append|+append}} {{路径/到/输出图片.png}}
  • 创建一个 GIF 动图,按 100ms 的间隔播放一系列图片:
bash
magick convert {{路径/到/图片1.png 路径/到/图片2.png ...}} -delay {{10}} {{路径/到/GIF 动图.gif}}
  • 创建一个纯红背景的空白图片:
bash
magick convert -size {{800x600}} "xc:{{#ff0000}}" {{路径/到/图片.png}}
  • 通过若干不同尺寸的图片生成一个 favicon:
bash
magick convert {{路径/到/图片1.png 路径/到/图片2.png ...}} {{路径/到/网站图标.icon}}

magick compare · 创建一个比较文件,可视化地标注出两个图片之间的差异 ​

另请参阅:magick。 更多信息:https://imagemagick.org/script/compare.php。

  • 比较两个图片:
bash
magick compare {{路径/到/图片1.png}} {{路径/到/图片2.png}} {{路径/到/比较图片.png}}
  • 使用特定的算法比较两个图片:
bash
magick compare -verbose -metric {{PSNR}} {{路径/到/图片1.png}} {{路径/到/图片2.png}} {{路径/到/比较图片.png}}

magick mogrify · 对图片进行调整尺寸,裁剪旋转或添加效果等操作 ​

修改直接作用于原文件。 另请参阅:magick。 更多信息:https://imagemagick.org/script/mogrify.php。

  • 将当前目录下所有 JPEG 图片的尺寸都调整至原尺寸的 50%:
bash
magick mogrify -resize {{50%}} {{*.jpg}}
  • 将当前目录下所有以 DSC 开头的图片尺寸都调整至 800x600:
bash
magick mogrify -resize {{800x600}} {{DSC*}}
  • 将当前目录下所有 PNG 图片都转换为 JPEG 图片:
bash
magick mogrify -format {{jpg}} {{*.png}}
  • 将当前目录下所有图片文件的饱和度都减半:
bash
magick mogrify -modulate {{100,50}} {{*}}
  • 将当前目录下所有图片文件的亮度都加倍:
bash
magick mogrify -modulate {{200}} {{*}}
  • 通过降低图像品质,缩小当前目录下所有 GIF 动图的文件大小:
bash
magick mogrify -layers 'optimize' -fuzz {{7%}} {{*.gif}}
  • 显示帮助:
bash
magick mogrify -help

magick montage · 在可自定义的网格内平铺图片 ​

另请参阅:magick。 更多信息:https://imagemagick.org/script/montage.php。

  • 平铺图片,尺寸大于格子的图片将会被自动缩小:
bash
magick montage {{路径/到/图片1.jpg 路径/到/图片2.jpg ...}} {{路径/到/拼图图片.jpg}}
  • 平铺图片,根据最大的图片来计算格子大小:
bash
magick montage {{路径/到/图片1.jpg 路径/到/图片2.jpg ...}} -geometry {{+0+0}} {{路径/到/拼图图片.jpg}}
  • 平铺图片,根据指定的格子大小调整图片尺寸:
bash
magick montage {{路径/到/图片1.jpg 路径/到/图片2.jpg ...}} -geometry {{640x480+0+0}} {{路径/到/拼图图片.jpg}}
  • 指定格子的行列数,如果图片数量超出格子数,则会输出复数张图片:
bash
magick montage {{路径/到/图片1.jpg 路径/到/图片2.jpg ...}} -geometry {{+0+0}} -tile {{2x3}} {{montage_%d.jpg}}
  • 平铺图片,裁剪图片以充满格子:
bash
magick montage {{路径/到/图片1.jpg 路径/到/图片2.jpg ...}} -geometry {{+0+0}} -resize {{640x480^}} -gravity {{center}} -crop {{640x480+0+0}} {{路径/到/拼图图片.jpg}}

ffmpeg · 视频转换工具 ​

另请参阅:gst-launch-1.0。 更多信息:https://ffmpeg.org/ffmpeg.html#Options。

  • 从视频中提取音频并保存为 MP3 格式:
bash
ffmpeg -i {{路径/到/video.mp4}} -vn {{路径/到/sound.mp3}}
  • 将 FLAC 文件转码为红皮书 CD 格式(44100 Hz(44.1 kHz),16 位):
bash
ffmpeg -i {{路径/到/input_audio.flac}} -ar 44100 -sample_fmt s16 {{路径/到/output_audio.wav}}
  • 将视频保存为 GIF,设置高度为 1000 像素,帧率为 15:
bash
ffmpeg -i {{路径/到/video.mp4}} {{[-vf|-filter:v]}} 'scale=-1:1000' -r 15 {{路径/到/output.gif}}
  • 将编号图像(如 frame_1.jpg、frame_2.jpg 等)合成为视频或 GIF:
bash
ffmpeg -i {{路径/到/frame_%d.jpg}} {{video.mpg|video.gif}}
  • 从给定的开始时间 mm:ss 到结束时间 mm2:ss2 裁剪视频(省略 -to 参数表示裁剪至末尾):
bash
ffmpeg -i {{路径/到/input_video.mp4}} -ss {{mm:ss}} -to {{mm2:ss2}} {{[-c|-codec]}} copy {{路径/到/output_video.mp4}}
  • 将 AVI 视频转换为 MP4,AAC 音频码率为 128kbit,h264 视频使用 CRF 编码:
bash
ffmpeg -i {{路径/到/input_video}}.avi {{[-c|-codec]}}:a aac -b:a 128k {{[-c|-codec]}}:v libx264 -crf 23 {{路径/到/output_video}}.mp4
  • 将 MKV 视频重新转换为 MP4,无需重新编码音频或视频流:
bash
ffmpeg -i {{路径/到/input_video}}.mkv {{[-c|-codec]}} copy {{路径/到/output_video}}.mp4
  • 将 MP4 视频转换为 VP9 编解码器。为获得最佳质量,请使用 CRF 值(建议范围为 15-35),并且 -b:v 必须为 0:
bash
ffmpeg -i {{路径/到/input_video}}.mp4 {{[-c|-codec]}}:v libvpx-vp9 -crf {{30}} -b:v 0 {{[-c|-codec]}}:a libopus -vbr on -threads {{线程数量}} {{路径/到/output_video}}.webm

ufraw-batch · 将来自相机的 RAW 文件转换为标准图像文件 ​

更多信息:https://manned.org/ufraw-batch。

  • 简单地将 RAW 文件转换为 JPEG:
bash
ufraw-batch --out-type=jpg {{(或多个)输入文件}}
  • 简单地将 RAW 文件转换为 PNG:
bash
ufraw-batch --out-type=png {{(或多个)输入文件}}
  • 从 RAW 文件中提取预览图像:
bash
ufraw-batch --embedded-image {{(或多个)输入文件}}
  • 将文件保存为不超过给定的最大尺寸 MAX1 和 MAX2:
bash
ufraw-batch --size=MAX1,MAX2 {{(或多个)输入文件}}

jp2a · 将 JPEG 图像转换为 ASCII ​

更多信息:https://manned.org/jp2a。

  • 从文件中读取 JPEG 图像并以 ASCII 显示:
bash
jp2a {{路径/到/image.jpeg}}
  • 从 URL 中读取 JPEG 图像并以 ASCII 显示:
bash
jp2a {{www.example.com/image.jpeg}}
  • 对 ASCII 输出进行着色:
bash
jp2a --colors {{路径/到/image.jpeg}}
  • 指定用于 ASCII 输出的字符:
bash
jp2a --chars='{{..-ooxx@@}}' {{路径/到/image.jpeg}}
  • 将 ASCII 输出写入一个文件:
bash
jp2a --output={{路径/到/output_file.txt}} {{路径/到/image.jpeg}}
  • 以 HTML 文件格式写入 ASCII 输出,适合在网页浏览器中查看:
bash
jp2a --html --output={{路径/到/output_file.html}} {{路径/到/image.jpeg}}

转换专用图像格式 ​

按源格式定位 Netpbm 转换器,YUV 相关的三种输入布局分别保留,避免选错格式。

jpegtopnm · 将 JPEG/JFIF 文件转换为 PPM 或 PGM 格式 ​

更多信息:https://netpbm.sourceforge.net/doc/jpegtopnm.html。

  • 将 JPEG/JFIF 图像转换为 PPM 或 PGM 图像:
bash
jpegtopnm {{路径/到/文件.jpg}} > {{路径/到/文件.pnm}}
  • 显示版本信息:
bash
jpegtopnm {{[-v|-version]}}

qoitopam · 将 QOI 图像(Quite OK Image 格式)转换为 Netpbm ​

更多信息:https://netpbm.sourceforge.net/doc/qoitopam.html。

  • 将 QOI 图像转换为 Netpbm:
bash
qoitopam {{路径/到/文件.qoi}} > {{路径/到/文件.pnm}}

qrttoppm · 将 QRT 光线追踪文件转换为 PPM 图像 ​

更多信息:https://netpbm.sourceforge.net/doc/qrttoppm.html。

  • 将一个 QRT 文件转换为 PPM 图像:
bash
qrttoppm {{路径/到/文件.qrt}} > {{路径/到/图像.ppm}}

ybmtopbm · 将 Bennet Yee “面部”文件转换为 PBM ​

更多信息:https://netpbm.sourceforge.net/doc/ybmtopbm.html。

  • 将 YBM 图像文件转换为 PBM:
bash
ybmtopbm {{路径/到/输入文件.ybm}} > {{路径/到/输出文件.pbm}}

yuvtoppm · 将 Abekas YUV 字节转换为 PPM 文件 ​

更多信息:https://netpbm.sourceforge.net/doc/yuvtoppm.html。

  • 从指定的输入文件读取 Akebas YUV 字节,转换成 PPM 图像,并存储在指定的输出文件中:
bash
yuvtoppm {{宽度}} {{高度}} {{路径/到/输入_文件.yuv}} > {{路径/到/输出_文件.ppm}}

yuvsplittoppm · 将三个抽样的 Abekas YUV 文件转换为一个 PPM 图像 ​

更多信息:https://netpbm.sourceforge.net/doc/yuvsplittoppm.html。

  • 从以基名开始的三个文件中读取 Akebas YUV 字节,将它们合并为一个单一的 PPM 图像,并将其存储到指定的输出文件中:
bash
yuvsplittoppm {{基名}} {{宽度}} {{高度}} > {{路径/到/输出_文件.ppm}}

yuy2topam · 将 YUY2 字节转换为 PAM ​

更多信息:https://netpbm.sourceforge.net/doc/yuy2topam.html。

  • 将 YUY2 字节转换为 PAM:
bash
yuy2topam {{[-w|-width]}} {{值}} {{[-h|-height]}} {{值}} {{路径/到/文件.yuy2}} > {{路径/到/文件.pam}}

zeisstopnm · 将 Zeiss 共聚焦文件转换为 Netbpm 格式 ​

更多信息:https://manned.org/zeisstopnm。

  • 将 Zeiss 共聚焦文件转换为 .pgm 或 .ppm 格式:
bash
zeisstopnm {{路径/到/文件}}
  • 将 Zeiss 共聚焦文件转换为 Netbpm 格式,并明确指定目标文件类型:
bash
zeisstopnm -{{pgm|ppm}} {{路径/到/文件}}

优化图像体积 ​

JPEG 和 PNG 各有独立优化工具,按目标格式选择。

jpegoptim · 优化 JPEG 图像 ​

更多信息:https://manned.org/jpegoptim。

  • 优化一组 JPEG 图像,保留所有相关数据:
bash
jpegoptim {{图像1.jpeg 图像2.jpeg 图像3.jpeg ...}}
  • 优化 JPEG 图像,剥离所有非必要数据:
bash
jpegoptim {{[-s|--strip-all]}} {{图像1.jpeg 图像2.jpeg 图像3.jpeg ...}}
  • 强制输出图像为渐进式:
bash
jpegoptim --all-progressive {{图像1.jpeg 图像2.jpeg 图像3.jpeg ...}}
  • 强制输出图像具有固定的最大文件大小:
bash
jpegoptim {{[-S|--size]}} {{250k}} {{图像1.jpeg 图像2.jpeg 图像3.jpeg ...}}

zopflipng · PNG 压缩工具 ​

更多信息:https://github.com/google/zopfli。

  • 优化一个 PNG 文件:
bash
zopflipng {{输入.png}} {{输出.png}}
  • 优化多个 PNG 文件并使用给定的前缀保存:
bash
zopflipng --prefix={{前缀}} {{图像1.png 图像2.png 图像3.png ...}}

继续阅读