Linux压缩图片
本文最后更新于 2024-09-05,文章内容可能已经过时。
Linux压缩图片
在Linux系统中,直接通过命令行工具来压缩图片大小(即减小图片的分辨率或文件体积)并不是一件直接的事情,因为大多数命令行图像处理工具(如convert来自ImageMagick,mogrify,sips(仅限macOS),jpegoptim,pngcrush等)主要用于转换图片格式、优化现有图片质量而不损失太多可见度,或者调整图片的尺寸(即分辨率),而不是直接“压缩”图片以减小文件大小,同时保持原有分辨率。
不过,你可以通过调整图片的尺寸或使用优化工具来减小图片的文件大小。以下是几种方法:
ImageMagick
使用ImageMagick调整图片尺寸
如果你想要减小图片的文件大小,一个常见的方法是减小图片的分辨率(即尺寸)。你可以使用convert命令来实现这一点:
convert original.jpg -resize 800x600 output.jpg
这条命令会将original.jpg调整到800x600像素的大小,并保存为output.jpg。注意,这会改变图片的分辨率,因此可能会影响图片的视觉质量。
使用ImageMagick优化图片质量
如果你想要保持图片的分辨率,但想要减小文件大小,可以尝试使用ImageMagick的优化功能,但这通常意味着在视觉上会有一定的质量损失:
convert original.jpg -quality 85 output.jpg
这条命令将original.jpg保存为output.jpg,同时将JPEG的质量因子设置为85(范围从0到100)。较低的质量因子会导致文件大小更小,但视觉质量也会下降。
ImageMagick的安装
ImageMagick是一个功能强大的图片处理工具,支持多种图片格式和转换操作。
# Debian/Ubuntu及其衍生版:
sudo apt update
sudo apt install ImageMagick
#Fedora:
sudo dnf install ImageMagick
# CentOS/RHEL(可能需要启用EPEL仓库):
sudo yum install epel-release
sudo yum install ImageMagick
# Arch Linux:
sudo pacman -S ImageMagick
使用专门的图片压缩工具
还有一些专门的图片压缩工具,如jpegoptim、pngquant等,它们专为压缩JPEG或PNG图片设计,能够在保持较高视觉质量的同时减小文件大小:
jpegoptim:用于优化JPEG图片。
jpegoptim --max=85 original.jpg
这会尝试将original.jpg压缩到尽可能小的体积,同时保持JPEG质量因子不超过85。
pngquant:用于压缩PNG图片到8位颜色深度。
pngquant --quality=80-90 original.png -o output.png
这会将original.png转换为8位PNG,并尽量保持视觉质量在80到90的范围内。
注意
压缩图片时,请确保你理解这些操作对图片质量和文件大小的影响。
不同的图片格式和压缩算法有不同的特点和优势,因此你可能需要根据具体情况选择合适的工具和方法。
备份原始图片是一个好习惯,以防在压缩过程中发生不可预见的问题。
jpegoptim的安装
jpegoptim是一个用于优化JPEG文件的工具,可以减少文件大小而不显著影响视觉质量。
# Debian/Ubuntu及其衍生版:
# jpegoptim可能不在默认仓库中,但可以从源代码编译或查找是否有第三方仓库提供。
#Fedora:
#Fedora的仓库中可能不包含jpegoptim,但可以尝试从源代码编译。
# CentOS/RHEL:
# 可以通过启用EPEL仓库来安装jpegoptim:
sudo yum install epel-release
sudo yum install jpegoptim
pngquant的安装
pngquant是一个用于将PNG图片转换为高质量、低大小的8位PNG图片的工具。
# Debian/Ubuntu及其衍生版:
# 在Ubuntu上,需要启用Universe仓库来安装pngquant:
sudo add-apt-repository universe
sudo apt update
sudo apt install pngquant
# Fedora:
sudo dnf install pngquant
# CentOS/RHEL(可能需要启用EPEL仓库):
sudo yum install epel-release
sudo yum install pngquant
# Arch Linux:
sudo pacman -S pngquant
批量处理脚本
批量压缩jpg png jpeg格式的图片,按照压缩比85进行压缩
#!/bin/bash
# 定义源文件夹路径
SOURCE_DIR="/home/ruoyi/resource"
# 定义目标文件夹路径
DEST_DIR="/root/ruoyi/imgnew"
# 确保目标文件夹存在
mkdir -p "$DEST_DIR"
# 遍历源文件夹内的所有 .jpg .jpeg .png 文件
for file in "$SOURCE_DIR"/*.jpg "$SOURCE_DIR"/*.jpeg "$SOURCE_DIR"/*.png; do
# 检查文件是否存在
if [ -f "$file" ]; then
# 获取文件名(不包含路径)
filename="${file##*/}"
# 定义输出文件的完整路径和名称
output_file="$DEST_DIR/$filename"
# 使用 ImageMagick 的 convert 命令压缩图片质量
convert "$file" -quality 85 "$output_file"
echo "Processed $file and saved as $output_file"
fi
done
echo "All JPEG files have been processed and saved."
将压缩好之后的图片文件覆盖会源文件夹
yes | cp -fv /home/ruoyi/imgnew/* /home/ruoyi/resource/
参数解释:
yes:yes 命令会自动输入 y(表示确认),与 cp 命令结合使用,可以自动确认所有覆盖提示
-f:强制覆盖目标文件,无需提示。
-v:显示详细的操作过程,输出每个复制的文件路径。
- 感谢你赐予我前进的力量