#jpeg #png #filesize #image-resizing #image #photo

bin+lib reduce_image_size

减少文件夹中图像的大小(可选地递归地包括子文件夹)

5 个版本

0.2.3 2024年7月10日
0.2.2 2024年7月9日
0.2.1 2024年6月14日
0.2.0 2024年1月30日
0.1.0 2023年12月29日

#325 in 图像

Download history 2/week @ 2024-05-21 127/week @ 2024-06-11 5/week @ 2024-06-18 241/week @ 2024-07-09 2/week @ 2024-07-23

每月下载量243

MIT 许可证

26KB
380 代码行

Reduce Image Size

CI Crates.io docs.rs

描述

减少文件夹中图像的大小(可选地递归地包括子文件夹)。

这对于存档照片很有用,例如,即使文件大小减少,照片在显示上看起来也相同。
此应用程序可以批量减少图像文件大小。

支持 JPEG 和 PNG 图像格式,以下文件扩展名(不区分大小写):jpgjpegpng

支持 Windows、macOS (ARM) 和 x86-64 的 Linux。

Windows、macOS 和 Linux 的可执行文件可以从仓库的 发布页面 下载。

默认情况下,保留原始图像并创建具有较小文件大小的副本。

默认情况下,复制整个文件夹树,包括源树中存在的所有子文件夹。
目标文件夹树将自动创建,新的减小大小的图像将被正确地复制到各自的路径。
只需要提供根目标文件夹,如果它不存在,它也将被创建。
不支持文件将被简单地复制到目标位置。

如果目标文件夹与源文件夹相同,则原始图像将被覆盖,不会保留。
其他不支持的文件将被保留。

如果磁盘空间足够,建议指定与源文件夹不同的目标文件夹,以便保留原始图像并检查新创建的减小大小的图像质量。
用户可以尝试使用 resizequality 参数。
用户还可以只进入一层,或者简单地在一个图像文件夹的副本上实验。
如果对结果满意,之后可以轻松删除原始图像以节省磁盘和/或云空间。

选项

  • 递归查看子目录(处理整个树);推荐:-r--recursive
  • 将图像尺寸减半:--resize
  • JPEG质量,从1(最差)到100(最佳);默认为75;PNG文件时忽略:-q--quality <质量>
  • 用户想要进行文件大小缩减的最小文件大小:-s {s,m,l,S,M,L}--size {s,m,l,S,M,L}
    • S = 100 kB,M = 500 kB,L = 1 MB
    • 小于指定大小的文件将直接复制到目标文件夹。
    • 如果省略此选项,则所有文件都将考虑进行大小缩减;即,考虑的最小大小为0。

示例

以下是如何为运行准备应用程序的说明。
示例中的文件路径适用于Windows。

  • reduce_image_size D:\img_src D:\img_dst
  • reduce_image_size D:\img_src D:\img_dst-r
  • reduce_image_size D:\img_src D:\img_dst-r-s m
  • reduce_image_size D:\img_src D:\img_dst--recursive--size L
  • reduce_image_size D:\img_src D:\img_dst-r--resize-q60 -s l
  • reduce_image_size D:\img_src D:\img_dst--recursive--resize--quality60 --size L

注意

  • 在Rust 1.74.1中开发,但后来也使用Rust 1.79.0进行了测试。
  • 在Windows 10和Windows 11上的x86-64 CPU上进行了测试。
  • 在macOS Sonoma 14.5上的Apple硅芯片M2 Pro上进行了测试。
  • 还测试了WSL - Ubuntu 22.04.2 LTS(GNU/Linux 5.15.133.1-microsoft-standard-WSL2 x86_64)在Windows 11 @ x86_64上。
  • 虽然未直接测试Linux,但至少在x86-64 CPU上应该可以工作。

运行应用程序

Windows、macOS 和 Linux 的可执行文件可以从仓库的 发布页面 下载。

使用最新版本。

下载适用于您的操作系统的相应存档并将其解压缩到所需的文件夹中。

存档文件包含可执行文件。

解压缩存档后,转到包含可执行文件的目录并按以下方式运行程序

reduce_image_size <source_folder> <destination_folder> [options]

或者,提供程序的完整路径。

源文件夹和目标文件夹的路径可以是绝对路径或相对路径。

使用cargo构建应用程序并运行

本节适用于您没有可执行文件且需要构建它的情况。

它可能取决于操作系统。例如,在Windows上安装nasm是必需的,但在macOS上不是必需的。nasm不支持Apple硅芯片,但此crate在macOS Sonoma 14.5上的Apple M2 Pro处理器上工作。尚未测试Linux。此外,尚未测试x86架构上的macOS。

库和应用程序需要

CMake添加到PATH环境变量。

确保以release模式构建应用程序,因为这样可以更快地运行。

构建

cargo build --release

运行

cargo run --release -- <source_folder> <destination_folder> [options]

此Rust crate最初旨在作为二进制(可执行)crate,即应用程序,但后来决定发布库部分,因此也可以将其用作Rust库。

只有主图像处理函数process_images已被公开。

辅助函数已被设为私有。

依赖关系

~15–24MB
~334K SLoC