Project Icon

imgp

命令行批量图像调整与优化工具

imgp是一个命令行图像处理工具,主要用于批量调整JPEG和PNG图像的大小和旋转方向。它采用多进程和SIMD并行技术,可快速处理大量图片并节省存储空间。该工具支持按比例或分辨率调整图片尺寸、旋转图像、自适应调整以及PNG转JPEG等功能,为用户提供了灵活的图像批处理选项。

imgp

最新发布 可用性 PyPI 构建状态 许可证

imgp_asciicast

观看imgp以闪电般的速度调整一个目录中的图像大小!

imgp 是一个用于JPEG和PNG图像的命令行图像调整器和旋转器。它可以一次性调整(或缩略)和旋转数千张图像的大小,速度快如闪电,同时显著节省存储空间。

由多进程处理、SIMD并行(得益于Pillow-SIMD库)、智能自适应算法、递归操作、shell完成脚本、EXIF保留(等等)驱动,imgp是一个非常灵活的实用工具,具有详细记录的易用选项。

imgp旨在成为Nautilus图像转换器扩展的更强大替代品,不依赖于任何文件管理器,而且速度更快。在不集成Nautilus的桌面环境(如Xfce或LxQt)中,imgp将成为你的得力助手。文件管理器nnn提供了一个脚本,可以使用imgp批量调整图像大小。

目录

功能

  • 按百分比或分辨率调整大小
  • 按指定角度顺时针旋转
  • 考虑方向的自适应调整大小
  • 强制调整至特定分辨率
  • 优化图像以节省更多空间
  • 通过最小图像大小限制处理
  • 将PNG转换为JPEG
  • 擦除exif元数据
  • 指定输出JPEG图像质量
  • 强制从小到大调整大小
  • 递归处理目录
  • 覆盖源图像选项
  • 适用于bash、fish和zsh的补全脚本
  • 最少的依赖

自适应模式

  • 如果指定的方向和图像方向相同[(H >= V 且 h > v) 或 (H < V 且 h < v)],则以较长的指定边作为参考调整图像大小。
  • 在交叉方向的情况下[(H >= V 且 h <= v) 或 (H < V 且 h >= v)],则以较短的指定边作为参考调整图像大小。与非自适应模式相同。

例如,如果一个图像的分辨率为2048x1365,正在调整为1366x768:

  • 在常规模式(默认)下,输出图像分辨率将为1152x768
  • 在自适应模式下,输出图像分辨率将为1366x910

性能

imgp能够在约8分钟内调整8823张混合分辨率(从高到普通)的图像(约4.5GB大小)的大小,这些图像存储在USB 2.0外部硬盘中,调整后的自适应分辨率为1366x1000。最终大小为897MB(约20%)。

imgp使用Python PIL/Pillow库。Nautilus图像转换器调用ImageMagick的convert工具。有关比较基准,请参阅这里

安装

依赖

imgp需要Python 3.8或更高版本。

要在Ubuntu上安装PIL库,运行:

sudo apt-get install python3-pil

或者,使用pip3:

sudo pip3 install pillow

SIMD处理器上,可以用pillow-simd替换pillow。

从包管理器安装

从你的包管理器安装imgp。如果可用版本较旧,请尝试其他安装方法。

打包状态(展开)


打包状态

未列出的打包者:


Homebrew TAP (brew install jarun/imgp/imgp)
PyPI (pip3 install imgp)
Source Mage (cast imgp)

发布包

最新稳定版本提供了Arch Linux、CentOS、Debian、Fedora、openSUSE Leap和Ubuntu的软件包。

从源代码安装

如果你已安装git,克隆此仓库。否则下载最新稳定版本开发版本风险)。

安装到默认位置(/usr/local):

sudo make install

要卸载,运行:

sudo make uninstall

支持PREFIX,以防你想安装到不同的位置。

独立运行

imgp是一个独立的工具。从包含目录运行:

./imgp

Shell 补全

Bash、Fish和Zsh的Shell补全脚本可以在auto-completion/的相应子目录中找到。请参阅你的Shell手册以获取安装说明。

使用方法

命令行选项

用法: imgp [-h] [-x res] [-o deg] [-a] [-c] [-e] [-f] [-H] [-i] [-k] [-m] [-M res]
           [-n] [-N] [-O] [-P] [-q N] [-r] [-s byte] [-w] [-d] [路径 [路径 ...]]

调整 JPEG 和 PNG 图像的大小和旋转角度。

位置参数:
  路径                  源文件或目录 [默认: 当前目录]

可选参数:
  -h, --help            显示此帮助信息并退出
  -x res, --res res     输出分辨率,格式为 宽x高 或百分比
  -o deg, --rotate deg  顺时针旋转角度(度)
  -a, --adapt           根据方向自适应分辨率 [默认: 关闭]
  -c, --convert         将 PNG 转换为 JPG 格式 [默认: 关闭]
  -e, --eraseexif       删除 exif 元数据 [默认: 关闭]
  -f, --force           强制调整到指定的精确分辨率 [默认: 关闭]
  -H, --hidden          包含隐藏(点)文件 [默认: 关闭]
  -i, --includeimgp     重新处理 _IMGP 文件。* 风险:请参阅文档
  -k, --keep            跳过(遵循 -c 或 --pr)与指定的宽或高或 --res=100 匹配的图像 [默认: 关闭]
  -m, --mute            静默操作 [默认: 提供信息]
  -M res, --minres res  最小分辨率,格式为 宽x高 或 --res 的百分比
  -n, --enlarge         放大较小的图像 [默认: 关闭]
  -N, --nearest         对 PNG 使用最近邻插值 [默认: 抗锯齿]
  -O, --optimize        优化输出图像 [默认: 关闭]
  -P, --progressive     将 JPEG 图像保存为渐进式 [默认: 关闭]
  -q N, --quality N     质量因子(N=1-95,仅适用于 JPEG) [默认: 75]
  -r, --recurse         递归处理非符号链接目录 [默认: 关闭]
  -s byte, --size byte  处理图像的最小大小 [默认: 1024]
  -w, --overwrite       覆盖源图像 [默认: 关闭]
  -d, --debug           启用调试日志 [默认: 关闭]

操作说明

  • 可以指定多个文件和目录作为源。如果省略 路径,则处理当前目录。
  • 如果不使用 --overwrite 选项,输出图像名称将附加 _IMGP。默认情况下不处理 _IMGP 文件。在使用 --overwrite 选项时这样做可能会导致潜在的竞态条件。
  • 目标宽度/高度较低的 PNG 文件不会被转换(即使使用了 --convert)。请单独运行 imgp --convert (*.png) 来转换这些文件。
  • 调整大小和旋转是有损操作。为了进一步减小文件大小,请尝试使用 --optimize--eraseexif 选项。
  • --optimize 选项速度较慢,编码器会对图像进行额外的处理以选择最佳编码设置。
  • 渐进式 JPEG 图像会被保存为渐进式。

示例

  1. 转换一些图像和目录:

    $ imgp -x 1366x768 ~/ ~/Pictures/image3.png ~/Downloads/
    /home/testuser/image1.png
    3840x2160 -> 1365x768
    11104999 字节 -> 1486426 字节
    
    /home/testuser/image2.jpg
    2048x1365 -> 1152x768
    224642 字节 -> 31421 字节
    
    /home/testuser/Pictures/image3.png
    1920x1080 -> 1365x768
    2811155 字节 -> 1657474 字节
    
    /home/testuser/Downloads/image4
    2048x1365 -> 1152x768
    224642 字节 -> 31421 字节
    
  2. 将图像缩放到 75% 并覆盖源图像:

    $ imgp -x 75 -w ~/image.jpg
    /home/testuser/image.jpg
    1366x767 -> 1025x575
    120968 字节 -> 45040 字节
    
  3. 将图像顺时针旋转 90 度:

    $ imgp -o 90  ~/image.jpg
    120968 字节 -> 72038 字节
    
  4. 将当前目录中的图像调整为 1366x1000 分辨率。递归访问所有目录,覆盖源图像,忽略宽度或高度匹配的图像,但将 PNG 图像转换为 JPEG。

    $ imgp -x 1366x1000 -wrack
    
  5. 设置宽度为 800,并保持比例调整高度。

    $ imgp -x 800x0
    未指定源。正在处理当前目录...
    
    ./image1.jpg
    1366x911 -> 800x534
    69022 字节 -> 35123 字节
    
    ./image2.jpg
    1050x1400 -> 800x1067
    458092 字节 -> 78089 字节
    
  6. 仅处理大于 50KiB 的图像:

    $ imgp -wrackx 1366x1000 -s 51200
    
  7. 为当前目录中最近修改的文件生成 64px 自适应缩略图:

    #!/usr/bin/env sh
    
    thumb64 ()
    {
        pop=$(ls -1t | head -1)
        imgp -acx 64x64 "$pop"
    }
    

开发者

  1. 版权所有 © 2016-2023 Arun Prakash Jana
  2. Ananya Jana
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号