命令与脚本:图片、音视频与文档 · 转换、比较、批处理与拼接图像至优化图像体积
转换、比较、批处理与拼接图像
先看 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 -helpmagick 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}}.webmufraw-batch · 将来自相机的 RAW 文件转换为标准图像文件
- 简单地将 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 格式
- 将 JPEG/JFIF 图像转换为 PPM 或 PGM 图像:
bash
jpegtopnm {{路径/到/文件.jpg}} > {{路径/到/文件.pnm}}- 显示版本信息:
bash
jpegtopnm {{[-v|-version]}}qoitopam · 将 QOI 图像(Quite OK Image 格式)转换为 Netpbm
- 将 QOI 图像转换为 Netpbm:
bash
qoitopam {{路径/到/文件.qoi}} > {{路径/到/文件.pnm}}qrttoppm · 将 QRT 光线追踪文件转换为 PPM 图像
- 将一个 QRT 文件转换为 PPM 图像:
bash
qrttoppm {{路径/到/文件.qrt}} > {{路径/到/图像.ppm}}ybmtopbm · 将 Bennet Yee “面部”文件转换为 PBM
- 将 YBM 图像文件转换为 PBM:
bash
ybmtopbm {{路径/到/输入文件.ybm}} > {{路径/到/输出文件.pbm}}yuvtoppm · 将 Abekas YUV 字节转换为 PPM 文件
- 从指定的输入文件读取 Akebas YUV 字节,转换成 PPM 图像,并存储在指定的输出文件中:
bash
yuvtoppm {{宽度}} {{高度}} {{路径/到/输入_文件.yuv}} > {{路径/到/输出_文件.ppm}}yuvsplittoppm · 将三个抽样的 Abekas YUV 文件转换为一个 PPM 图像
- 从以基名开始的三个文件中读取 Akebas YUV 字节,将它们合并为一个单一的 PPM 图像,并将其存储到指定的输出文件中:
bash
yuvsplittoppm {{基名}} {{宽度}} {{高度}} > {{路径/到/输出_文件.ppm}}yuy2topam · 将 YUY2 字节转换为 PAM
- 将 YUY2 字节转换为 PAM:
bash
yuy2topam {{[-w|-width]}} {{值}} {{[-h|-height]}} {{值}} {{路径/到/文件.yuy2}} > {{路径/到/文件.pam}}zeisstopnm · 将 Zeiss 共聚焦文件转换为 Netbpm 格式
- 将 Zeiss 共聚焦文件转换为
.pgm或.ppm格式:
bash
zeisstopnm {{路径/到/文件}}- 将 Zeiss 共聚焦文件转换为 Netbpm 格式,并明确指定目标文件类型:
bash
zeisstopnm -{{pgm|ppm}} {{路径/到/文件}}优化图像体积
JPEG 和 PNG 各有独立优化工具,按目标格式选择。
jpegoptim · 优化 JPEG 图像
- 优化一组 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 压缩工具
- 优化一个 PNG 文件:
bash
zopflipng {{输入.png}} {{输出.png}}- 优化多个 PNG 文件并使用给定的前缀保存:
bash
zopflipng --prefix={{前缀}} {{图像1.png 图像2.png 图像3.png ...}}继续阅读
- 文件与文本处理完整实践与解答
- 文件与文本处理上手与对象
- 文件与文本处理任务与配置