Linux批量转换图片文件(png/jpg)
ImageMagick 转换图片
参考:
在 Linux 下将 PNG 和 JPG 批量互转的四种方法
https://blog.csdn.net/m0_37874102/article/details/115480073
Linux系统下批量压缩图片
顺便记录两个无损压缩图片命令工具:
jpegoptim - 是一种用于优化/压缩JPEG文件而不会降低质量的实用程序。
optipng –是一个小型程序,可以将PNG图像优化为较小的尺寸而不会丢失任何信息。
一、convert命令
Version: ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
Copyright: (C) 1999-2021 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP(4.5)
Delegates (built-in): bzlib djvu fftw fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib
Usage: convert-im6.q16 [options ...] file [ [options ...] file ...] [options ...] file
convert 命令是 /usr/bin/convert-im6.q16 软连接
二、mogrify 命令
convert-im6.q16 [options ...] file [ [options ...] file ...] [options ...] file
Version: ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
Copyright: (C) 1999-2021 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP(4.5)
Delegates (built-in): bzlib djvu fftw fontconfig freetype heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib
Usage: mogrify-im6.q16 [options ...] file [ [options ...] file ...]
mogrify命令是 /usr/bin/mogrify-im6.q16 软连接
三、shell命令转换
1、 使用 ls和 xargs命令来转换 PNG 和 JPG
- 从 PNG 转换到 JPG
$ ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"'
- 从 JPG 转换到 PNG
$ ls -1 *.jpg | xargs -n 1 bash -c 'convert "$0" "${0%.jpg}.png"'
-c – 指示 bash 运行给定的命令
2、使用for循环命令来转换 PNG 和 JPG
- 从 PNG 转换到 JPG
$ bash -c 'for image in *.png; do convert "$image" "${image%.png}.jpg"; echo "image $image converted to ${image%.png}.jpg"; done'
- 从 JPG 转换到 PNG
$ bash -c 'for image in *.jpg; do convert "$image" "${image%.jpg}.png"; echo "image $image converted to ${image%.jpg}.png"; done'
-c 允许执行包括在单引号中的循环语句。
3、shell脚本文件
#!/bin/bash #convert for image in *.png; do convert "$image" "${image%.png}.jpg" echo “image $image converted to ${image%.png}.jpg ” done exit 0
chmod执行
$ chmod +x convert.sh $ ./convert.sh
四、压缩图片
# 查询大于2M的图片文件 # 查询总数量 :215535个文件 find -type f -size +2M -regex ".*\.\(jpg\|JPG\|jpeg\|JPEG\|png\|PNG\)" | wc -l # 文件大小统计,这个统计 find -type f -size +2M -regex ".*\.\(jpg\|JPG\|jpeg\|JPEG\|png\|PNG\)" | xargs du -ach # 上面文件大小统计的命令不太准确,后面因统计不太准确,所以找到了以下的命令,可以直接计算出文件的大小、文件的数量 # 查询大于2M 的所有图片数量与文件大小 # 总数量:339586个 # 总大小:1068.79G # 平均大小:3.2M find . -size +2048 -regex ".*\.\(jpg\|JPG\|jpeg\|JPEG\|png\|PNG\)" -exec ls -l {} \; |awk 'BEGIN{count=0;size=0;} \ {count = count + 1; size = size + $5/1024/1024;} \ END{print "Total count " count; \ print "Total Size " size/1024 " GB" ; \ print "Avg Size " size / count "MB"; \ print "—"}'
对2M以上文件进行压缩,压缩品质为60,-p为保留原文件修改时间,-t为压缩完成后统计输出压缩率
find . -size +2048 -regex ".*\.\(jpg\|JPG\|jpeg\|JPEG\)" | xargs jpegoptim -m60 -p -t
# 新建 new_dir 文件夹,文件压缩后输出到 new_dir
find . -size +2048 -regex ".*\.\(jpg\|JPG\|jpeg\|JPEG\)" | xargs jpegoptim -m60 -p -t -d new_dir
optipng 图片色彩度高压缩很慢,并且文件大小变化很低
find -name '*.png' | xargs optipng
用 convert
# ImageMagick sudo install ImageMagick # png格式的图片压缩使用optimpng 压缩效率太低了 ,使用ImageMagick测试可行,但是效率一般,150M大小10个文件左右需要35秒左右,不过可以压缩大文件,且不区分文件类型都可以压缩, 如100M以上的jpg、png都可以文件 find ./ -regex '.*\(png\|PNG\)' -size +2M -exec convert -quality 60 {} {} \;
Finish.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了