rust - 将bitmap位图文件另存为png格式
本文提供了一种将bitmap位图文件另存为png格式文件的方法。
添加依赖
cargo add image
转换函数
use image::{
codecs::png::PngEncoder, GenericImageView, ImageEncoder, ImageFormat,
ImageResult,
};
use std::{
fs,
io::{BufReader, BufWriter},
path::Path,
};
/// 将bitmap位图转换为png格式
pub fn to_png(bitmap_path: &Path, png_path: &Path) -> ImageResult<()> {
// 读取位图文件
let bitmap_fs = fs::File::open(bitmap_path).expect("Read bitmap");
let buf_reader = BufReader::new(bitmap_fs);
let img = image::load(buf_reader, ImageFormat::Bmp).unwrap();
// 创建png空文件
let png_file = fs::File::create(png_path)?;
let ref mut buff = BufWriter::new(png_file);
let encoder = PngEncoder::new(buff);
// 转换并写png文件
encoder.write_image(
&img.as_bytes().to_vec(),
img.dimensions().0,
img.dimensions().1,
img.color().into(),
)
}
单元测试
use core_utils::image::bitmap;
use std::env;
#[test]
fn test_to_png() {
// 读取bitmpa文件
let bitmap_path = env::current_dir().unwrap().join("tests/test-image.bmp");
// 保存png文件
let png_path = env::current_dir().unwrap().join("tests/test-image.png");
bitmap::to_png(bitmap_path.as_path(), png_path.as_path()).unwrap();
}
原文地址:https://blog.csdn.net/liuyuan_jq/article/details/136996661
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!