rust將bitmap位圖文件另存為png格式的方法
本文提供了一種將bitmap位圖文件另存為png格式文件的方法。
添加依賴
cargo add image
轉(zhuǎn)換函數(shù)
use image::{
codecs::png::PngEncoder, GenericImageView, ImageEncoder, ImageFormat,
ImageResult,
};
use std::{
fs,
io::{BufReader, BufWriter},
path::Path,
};
/// 將bitmap位圖轉(zhuǎn)換為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();
// 創(chuàng)建png空文件
let png_file = fs::File::create(png_path)?;
let ref mut buff = BufWriter::new(png_file);
let encoder = PngEncoder::new(buff);
// 轉(zhuǎn)換并寫png文件
encoder.write_image(
&img.as_bytes().to_vec(),
img.dimensions().0,
img.dimensions().1,
img.color().into(),
)
}單元測(cè)試
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();
}到此這篇關(guān)于rust如何將bitmap位圖文件另存為png格式的文章就介紹到這了,更多相關(guān)rust bitmap位另存為png格式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Rust數(shù)據(jù)類型之結(jié)構(gòu)體Struct的使用
結(jié)構(gòu)體是Rust中非常強(qiáng)大和靈活的數(shù)據(jù)結(jié)構(gòu),可以用于組織和操作各種類型的數(shù)據(jù),本文就來(lái)介紹一下Rust數(shù)據(jù)類型之結(jié)構(gòu)體Struct的使用,感興趣的可以了解一下2023-12-12
Rust?Atomics?and?Locks內(nèi)存序Memory?Ordering詳解
這篇文章主要為大家介紹了Rust?Atomics?and?Locks內(nèi)存序Memory?Ordering詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
90%的Rust新手都不知道的3個(gè)實(shí)用開發(fā)技巧小結(jié)
Rust是一個(gè)新興的系統(tǒng)級(jí)編程語(yǔ)言,以其獨(dú)特的所有權(quán)系統(tǒng)和借用檢查器而聞名,盡管它被認(rèn)為是一門相對(duì)較難的語(yǔ)言,但只要掌握了正確的學(xué)習(xí)方法,你會(huì)發(fā)現(xiàn)Rust其實(shí)并不復(fù)雜,這篇文章主要介紹了90%的Rust新手都不知道的3個(gè)實(shí)用開發(fā)技巧,需要的朋友可以參考下2026-06-06
Rust重載運(yùn)算符之復(fù)數(shù)四則運(yùn)算的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Rust如何實(shí)現(xiàn)復(fù)數(shù)以及復(fù)數(shù)的四則運(yùn)算,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-08-08
rust 如何使用 cargo-nextest 替代 cargo te
cargo-nextest 是新一代的rust測(cè)試程序,能夠極大提升測(cè)試性能,可以完全替代 cargo test 命令,這篇文章主要介紹了rust 如何使用 cargo-nextest 替代 cargo test,需要的朋友可以參考下2024-05-05
Rust?連接?PostgreSQL?數(shù)據(jù)庫(kù)的詳細(xì)過(guò)程
這篇文章主要介紹了Rust?連接?PostgreSQL?數(shù)據(jù)庫(kù)的完整代碼,本文圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01

