[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!("转换完成!");
}
如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!
txttool.com 说一段 esp56物联 查询128 IP查询