rust WebP 转换 png 图像

180it 2024-10-21 PM 84℃ 0条
[dependencies]
image = "0.25.4"
webp = "0.3.0"


use std::fs::File;
use std::io::{BufReader, Read};
use image::DynamicImage;
use webp::Decoder;

fn main() {
    // 打开 WebP 文件
    let webp_file = File::open("123.webp").expect("无法打开 WebP 文件");
    let mut reader = BufReader::new(webp_file);

    // 读取文件内容到字节缓冲区
    let mut buffer = Vec::new();
    reader.read_to_end(&mut buffer).expect("无法读取 WebP 文件");

    // 解码 WebP 文件
    let decoder = Decoder::new(&buffer);
    let webp_image = decoder.decode().expect("无法解码 WebP 文件");

    // 将 WebP 图像转换为 DynamicImage
    let dynamic_image = webp_image.to_image();

    // 将 DynamicImage 转换为 ImageBuffer<Rgba<u8>, Vec<u8>>
    let image_buffer = dynamic_image.into_rgba8();

    // 保存为 PNG 文件
    DynamicImage::ImageRgba8(image_buffer).save("output.png").expect("无法保存 PNG 文件");

    println!("转换完成!");
}
支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

rust WebP 转换 png 图像