centos系统压缩jpg/png/gif图片文件
安装压缩依赖库
yum install ImageMagick
yum install optipng
其中ImageMagick用于压缩jpg/png文件,gifsicle用于压缩gif文件,libwebp-devel用于压缩webp文件
执行压缩GIF文件命令
find -type f -name "*.gif" -size +100k -exec sh -c 'for gif_file do convert "$gif_file" -resize 50% -coalesce -layers OptimizeTransparency -colors 32 -compress LZW "$gif_file"; done' sh {} +
在上面的代码中,我们使用-layers OptimizeTransparency
选项优化图像的层数,并使用-colors 32
选项将图像的颜色深度减少到32色。这将有助于进一步减小文件大小,而不会对图像质量造成太大的影响。同时,我们也不再限制帧率,因此可以保留原始GIF文件的帧率。
需要注意的是,压缩后的文件将存储在原始文件的同一目录中,将覆盖原始文件。
执行压缩JPG文件命令
find -type f -name '*.jpg' -size +100k -exec bash -c 'size=$(identify -format "%b" "{}" | awk "{ printf \"%.0f\", \$1 }"); if [ "$size" -gt 1000000 ]; then convert "{}" -quality 50% -define jpeg:preserve-settings "/tmp/${1##*/}_compressed.jpg"; elif [ "$size" -gt 500000 ]; then convert "{}" -quality 60% -define jpeg:preserve-settings "/tmp/${1##*/}_compressed.jpg"; else convert "{}" -quality 70% -define jpeg:preserve-settings "/tmp/${1##*/}.jpg"; fi && mv "/tmp/${1##*/}"* "${1}"' _ {} \;
这段代码是一个用于图片压缩的命令行脚本。下面是对这段代码的逐行解释:
find -type f -name '*.jpg'
:查找当前目录及其子目录下所有以.jpg
结尾的文件;-exec bash -c '...' _ {} \;
:对于找到的每一个文件,执行后面的命令;size=$(identify -format "%b" "{}" | awk "{ printf \"%.0f\", \$1 }")
:使用identify
命令获取当前文件的大小,并使用awk
命令将结果四舍五入为整数,然后将结果存储在size
变量中;if [ "$size" -gt 1000000 ]; then ... elif [ "$size" -gt 500000 ]; then ... else ... fi
:根据文件大小的不同,选择不同的压缩质量。如果文件大小大于1MB,则压缩质量为50%;如果文件大小大于500KB,则压缩质量为60%;否则,压缩质量为70%;convert "{}" -quality 50% -define jpeg:preserve-settings "/tmp/${1##*/}_compressed.jpg"
:使用convert
命令将当前文件压缩成指定质量的JPEG格式,并将压缩后的文件存储在/tmp
目录中;mv "/tmp/${1##*/}"* "${1}"
:将压缩后的文件移动到原始文件所在的目录,并保留原始文件名。
总体来说,这段代码的作用是对指定目录下的所有JPEG图片进行压缩,以减小文件大小并节省存储空间。具体压缩质量的选择取决于每个文件的大小,压缩后的文件会被存储在/tmp
目录中,并且会被重命名为原始文件名加上_compressed
后缀。
执行压缩PNG文件命令
find . -type f -name "*.png" -print0 | xargs -0 -P "$(nproc)" optipng -o7
这段命令是用于在当前目录及其子目录中查找所有名字以 ".png" 结尾的文件,并使用 optipng 工具将这些文件以最高压缩级别进行压缩。
这个命令使用 find
命令来查找当前目录下所有以 .png
结尾的文件,并将它们的路径传递给 xargs
命令。 xargs
命令将文件路径分成多个子任务,并使用 -P
选项并发地运行这些子任务。
$(nproc)
表示使用当前计算机的 CPU 核心数量来设置并发任务的数量。这样可以利用多线程来加快处理速度。
下面是这个命令的具体解释:
find
是一个强大的命令行工具,用于在文件系统中查找满足指定条件的文件或目录。.
表示从当前目录开始查找。-type f
表示查找的是文件而不是目录。-name "*.png"
表示查找名字以 ".png" 结尾的文件。-exec
表示对于查找到的每一个文件执行指定的命令。optipng -o7 "{}"
表示使用 optipng 工具将查找到的文件以最高压缩级别进行压缩。\;
表示命令结束,必须加上。
在这个命令中,{}
是一个特殊的占位符,它会被 find 命令替换为查找到的每一个文件的路径。通过这种方式,我们可以在使用 optipng 压缩文件时指定文件的路径。
因此,这段命令的作用是查找当前目录及其子目录中所有名字以 ".png" 结尾的文件,并使用 optipng 工具将这些文件以最高压缩级别进行压缩。
123
123123 什么意思
null
把广告放木鱼上,简直是个商业天才
000
6六