linux

linux libwebp如何压缩图片

小樊
81
2024-12-31 00:45:07
栏目: 智能运维

在Linux系统中,可以使用libwebp库来压缩图片

  1. 首先确保已经安装了libwebp库。如果尚未安装,请使用以下命令安装:

    对于Debian/Ubuntu系统:

    sudo apt-get install libwebp-dev
    

    对于CentOS/RHEL系统:

    sudo yum install libwebp-devel
    

    对于Fedora系统:

    sudo dnf install libwebp-devel
    
  2. 使用libwebpcwebp命令行工具压缩图片。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
    
  3. 如果需要编写程序来批量压缩图片,可以使用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

0
看了该问题的人还看了