imgp

imgp

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

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

imgp图像处理命令行工具批量处理开源软件Github开源项目
<h1 align="center">imgp</h1> <p align="center"> <a href="https://github.com/jarun/imgp/releases/latest"><img src="https://yellow-cdn.veclightyear.com/835a84d5/1f7c6c66-982a-4405-a794-1de88a37013d.svg?maxAge=600" alt="最新发布" /></a> <a href="https://repology.org/project/imgp/versions"><img src="https://yellow-cdn.veclightyear.com/835a84d5/8ae94f4f-0ac6-4680-82d7-16f145e02d04.svg" alt="可用性"></a> <a href="https://pypi.org/project/imgp/"><img src="https://yellow-cdn.veclightyear.com/835a84d5/e6ac5792-5334-44df-a97f-46b2bda52a17.svg?maxAge=600" alt="PyPI" /></a> <a href="https://circleci.com/gh/jarun/workflows/imgp"><img src="https://yellow-cdn.veclightyear.com/835a84d5/9c2f7dae-4c31-4969-b32d-95b9cebccc3b.svg" alt="构建状态" /></a> <a href="https://github.com/jarun/imgp/blob/master/LICENSE"><img src="https://yellow-cdn.veclightyear.com/835a84d5/39e72837-94f7-4d32-b685-5974ee21e6e0.svg?maxAge=2592000" alt="许可证" /></a> </p> <p align="center"> <a href="https://asciinema.org/a/88448"><img src="https://yellow-cdn.veclightyear.com/835a84d5/1471492c-f978-43ad-93f9-c3d1a3f50c4a.svg" alt="imgp_asciicast" width="600"/></a> </p> <p align="center"><i>观看imgp以闪电般的速度调整一个目录中的图像大小!</i></p>

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。如果可用版本较旧,请尝试其他安装方法。

<details><summary>打包状态(展开)</summary> <p> <br> <a href="https://repology.org/project/imgp/versions"><img src="https://yellow-cdn.veclightyear.com/835a84d5/a61a27e2-b897-4a63-acbd-805cc02fb23d.svg" alt="打包状态"></a> </p> 未列出的打包者: <p> <br> ● <a href="https://github.com/jarun/homebrew-imgp">Homebrew TAP</a> (<code>brew install jarun/imgp/imgp</code>)<br> ● <a href="https://pypi.org/project/imgp/">PyPI</a> (<code>pip3 install imgp</code>)<br> ● <a href="http://codex.sourcemage.org/test/graphics/imgp/">Source Mage</a> (<code>cast imgp</code>)<br> </p> </details>

发布包

最新稳定版本提供了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

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多