image-small
v1.6.0
Published
An easy images and videos compress tool that supports both batch processing and single file compression.
Downloads
43
Maintainers
Readme
image-small工具使用说明
一、概述
image-small是一个基于Node.js开发的工具,用于压缩图像和视频文件。它能够处理多种常见的图像和视频格式,通过简单的命令行操作实现文件的压缩,并提供了一些相关的信息输出,如文件压缩前后的大小、压缩率以及视频处理的进度和时间等。
二、功能特性
- 图像压缩
- 支持多种图像格式:
.jpg、.jpeg、.png、.gif、.webp。 - 支持文件夹批量压缩和单个文件压缩。
- 可以指定宽度对图像进行压缩,将压缩后的图像保存到原文件夹下(文件名前加上
compressed_),并可选择删除原始文件并将压缩后的文件重命名为原始文件名。同时,会计算并显示压缩前后的文件大小以及压缩率。
- 支持多种图像格式:
- 视频压缩
- 支持多种视频格式:
.mp4、.avi、.mkv、.mov。 - 支持单个视频文件压缩。
- 将视频压缩到指定分辨率(默认854x480),并输出压缩后的视频到原视频所在目录下(文件名前加上
compressed_)。在压缩过程中,会显示处理进度,压缩完成后会显示处理时间。
- 支持多种视频格式:
- 视频转音频
- 支持从视频文件中提取音频并保存为MP3格式。
- 可以指定开始和结束时间来提取视频中的特定片段音频。
三、安装依赖
在使用
image-small工具之前,需要确保以下Node.js库已经安装:可以使用
npm命令安装这些依赖,例如:npm install ffmpeg -g
四、使用方法
- 命令行参数
- 运行
image-small时,可以接受不同的参数来执行图像或视频的压缩操作。 - 对于图像压缩:
- 文件夹批量压缩:
image-small [imageFolder] [width] - 单个文件压缩:
image-small [imageFile] [width] imageFolder:要压缩图像的文件夹路径。imageFile:要压缩的单个图像文件路径。width:指定图像压缩后的宽度(单位:像素),默认600。
- 文件夹批量压缩:
- 对于视频压缩:
- 命令格式:
image-small [videoFile] --video [size] videoFile:要压缩的视频文件路径。size:指定视频压缩后的分辨率(如854x480),默认为854x480。
- 命令格式:
- 对于视频转音频:
- 命令格式:
image-small [videoFile] --audio [startTime] [endTime] videoFile:要提取音频的视频文件路径。startTime:开始时间(秒),可选,默认为0。endTime:结束时间(秒),可选,默认为视频结束。
- 命令格式:
- 运行
- 示例
- 图像压缩示例
- 批量压缩文件夹中的图像:
image-small /path/to/images 600- 压缩单个图像文件:
image-small /path/to/image.jpg 800 - 视频压缩示例
- 压缩单个视频文件:
image-small /path/to/video.mp4 --video- 压缩单个视频文件并指定分辨率:
image-small /path/to/video.mp4 --video 1280x720 - 视频转音频示例
- 提取整个视频的音频:
image-small /path/to/video.mp4 --audio- 提取视频中特定时间段的音频(从第30秒到第60秒):
image-small /path/to/video.mp4 --audio 30 60
- 图像压缩示例
五、代码结构
showHelp函数- 功能:在控制台显示帮助信息,包括工具名称、版本、用法示例、支持的文件格式以及功能概述等内容,然后退出进程。
- 使用方法:当用户输入的命令参数不符合要求或者用户请求查看帮助时调用。
formatBytes函数- 功能:将字节数转换为更易读的格式(如KB、MB等),接受字节数和可选的小数位数作为参数。
- 使用方法:在图像和视频压缩过程中,用于将文件大小转换为易读格式以便于在控制台输出。
compressSingleImage函数- 功能:处理单个图像文件的压缩操作。它检查文件格式,使用
sharp库对图像进行压缩、保存、计算文件大小和压缩率等操作,并在控制台输出相关信息。 - 使用方法:当执行单个图像压缩命令时,该函数被调用,传入要压缩的图像文件路径和指定的宽度值。
- 功能:处理单个图像文件的压缩操作。它检查文件格式,使用
compressImagesInFolder函数- 功能:处理指定文件夹中的图像文件压缩操作。它读取文件夹中的文件,筛选出支持的图像格式,然后使用
sharp库对图像进行压缩、保存、计算文件大小和压缩率等操作,并在控制台输出相关信息。 - 使用方法:当执行图像压缩命令时,该函数被调用,传入要压缩图像的文件夹路径和指定的宽度值。
- 功能:处理指定文件夹中的图像文件压缩操作。它读取文件夹中的文件,筛选出支持的图像格式,然后使用
compressVideosInFolder函数- 功能:处理视频文件的压缩操作。它获取视频文件的绝对路径和所在目录,构建输出文件的名称,然后使用
fluent - ffmpeg库对视频进行压缩操作,在压缩过程中显示进度,压缩完成后显示处理时间等信息。 - 使用方法:当执行视频压缩命令时,该函数被调用,传入要压缩的视频文件路径。
- 功能:处理视频文件的压缩操作。它获取视频文件的绝对路径和所在目录,构建输出文件的名称,然后使用
convertVideoToAudio函数- 功能:从视频文件中提取音频并保存为MP3格式。支持指定开始和结束时间来提取视频中的特定片段音频。
- 使用方法:当执行视频转音频命令时,该函数被调用,传入视频文件路径以及可选的开始和结束时间。
六、注意事项
- 在运行视频压缩操作时,虽然代码尝试设置多线程(当前可能因
fluent-ffmpeg版本问题而注释掉相关代码),但在实际应用中可能需要根据系统资源(如CPU核心数)和ffmpeg版本调整多线程设置以获得最佳性能。 - 对于图像压缩,在删除原始文件和重命名压缩后的文件时需谨慎操作,确保备份重要文件,以免数据丢失。
- 视频压缩和音频提取目前只支持单个文件,不支持文件夹批量处理。
- 音频提取功能需要系统中安装了FFmpeg。
