在Linux系统中,可以使用libwebp
库来压缩图片
首先确保已经安装了libwebp
库。如果尚未安装,请使用以下命令安装:
对于Debian/Ubuntu系统:
sudo apt-get install libwebp-dev
对于CentOS/RHEL系统:
sudo yum install libwebp-devel
对于Fedora系统:
sudo dnf install libwebp-devel
使用libwebp
的cwebp
命令行工具压缩图片。cwebp
可以将JPEG、PNG等格式的图片转换为WebP格式,并具有压缩选项。以下是一些常用的cwebp
选项:
-q
:设置输出图片的质量,范围为0(最差质量,最小文件大小)到100(最佳质量,最大文件大小)。-o
:指定输出文件的名称和路径。-s
:启用缩放功能,可以减小图片尺寸。-alpha
:保留图片的透明度信息。示例:将名为input.jpg
的图片压缩为WebP格式,质量为80,输出文件名为output.webp
:
cwebp -q 80 input.jpg -o output.webp
如果需要编写程序来批量压缩图片,可以使用libwebp
的API。以下是一个使用C语言的简单示例:
#include <stdio.h>
#include <webp/encode.h>
int main() {
int width = 800;
int height = 600;
uint8_t *image_data = malloc(width * height * 4);
// 读取图片数据到image_data,此处省略读取图片的代码
WebPConfig config;
WebPPicture pic;
WebPEncodeInit(&config);
config.quality = 80;
config.method = WEBP_METHOD_Lossy;
config.alpha_quality = 100;
pic.width = width;
pic.height = height;
pic.bytes = image_data;
pic.is_alpha = 1; // 如果图片包含透明度,设置为1
int encoded_size = WebPEncode(&config, &pic, &encoded_data);
if (encoded_size > 0) {
FILE *output_file = fopen("output.webp", "wb");
fwrite(encoded_data, 1, encoded_size, output_file);
fclose(output_file);
free(encoded_data);
printf("Image compressed successfully!\n");
} else {
printf("Error compressing image!\n");
}
free(image_data);
return 0;
}
编译并运行此程序:
gcc -o compress_image compress_image.c -lwebp
./compress_image
这将读取名为input.jpg
的图片,将其压缩为WebP格式,质量为80,并将输出文件保存为output.webp
。