欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

rust將bitmap位圖文件另存為png格式的方法

 更新時(shí)間:2024年03月28日 10:59:20   作者:會(huì)編程的大白熊  
通過添加依賴,轉(zhuǎn)換函數(shù)和單元測試操作步驟來解決將bitmap位圖文件另存為png格式文件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對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(),
    )
}

單元測試

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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • rust多個(gè)mod文件引用和文件夾mod使用注意事項(xiàng)小結(jié)

    rust多個(gè)mod文件引用和文件夾mod使用注意事項(xiàng)小結(jié)

    在 Rust 項(xiàng)目中,可以使用 mod 關(guān)鍵字將一個(gè)文件夾或一個(gè) rs 文件作為一個(gè)模塊引入到當(dāng)前文件中,本文給大家介紹rust多個(gè)mod文件引用和文件夾mod使用注意事項(xiàng)小結(jié),感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Rust語言之Copy和Clone詳解

    Rust語言之Copy和Clone詳解

    在 Rust 中,Copy 和 Clone trait 用于控制類型的復(fù)制行為。它們允許你定義如何復(fù)制類型的值,以及在什么情況下可以復(fù)制。本文將詳細(xì)介紹這兩個(gè) trait 的作用和用法,并通過代碼示例來展示它們的使用,需要的朋友可以參考下
    2023-05-05
  • Rust日期與時(shí)間的操作方法

    Rust日期與時(shí)間的操作方法

    Rust的時(shí)間操作主要用到chrono庫,接下來我將簡單選一些常用的操作進(jìn)行介紹,感興趣的朋友跟隨小編一起看看吧
    2023-09-09
  • Rust中引用的具體使用

    Rust中引用的具體使用

    在Rust語言中,引用機(jī)制是其所有權(quán)系統(tǒng)的重要組成部分,ust提供了兩種類型的引用,不可變引用和可變引用,本文就來詳細(xì)的介紹一下這兩種的用法,感興趣的可以了解一下
    2024-03-03
  • 詳解thiserror庫在Rust中的使用

    詳解thiserror庫在Rust中的使用

    在編程中,錯(cuò)誤處理是一個(gè)至關(guān)重要的部分,在Rust中,我們經(jīng)常使用Result和Option類型來進(jìn)行錯(cuò)誤處理,但有時(shí),我們需要?jiǎng)?chuàng)建自定義的錯(cuò)誤類型,這就是thiserror庫發(fā)揮作用的地方,可以極大的簡化代碼,所以本文就給大家介紹一下如何使用thiserror
    2023-08-08
  • Rust語言從入門到精通系列之Iterator迭代器深入詳解

    Rust語言從入門到精通系列之Iterator迭代器深入詳解

    這篇文章主要為大家介紹了Rust語言從入門到精通系列之Iterator迭代器深入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • RUST異步流處理方法詳細(xì)講解

    RUST異步流處理方法詳細(xì)講解

    這篇文章主要介紹了RUST異步流處理方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • 從迷你todo?命令行入門Rust示例詳解

    從迷你todo?命令行入門Rust示例詳解

    這篇文章主要為大家介紹了從一個(gè)迷你todo命令行入門Rust的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 一文帶你了解Rust是如何處理錯(cuò)誤的

    一文帶你了解Rust是如何處理錯(cuò)誤的

    程序在運(yùn)行的過程中,總是會(huì)不可避免地產(chǎn)生錯(cuò)誤,而如何優(yōu)雅地解決錯(cuò)誤,也是語言的設(shè)計(jì)哲學(xué)之一。本文就來和大家來了Rust是如何處理錯(cuò)誤的,感興趣的可以了解一下
    2022-11-11
  • Rust字符串匹配Rabin-Karp算法詳解

    Rust字符串匹配Rabin-Karp算法詳解

    Rabin-Karp算法也可以叫 Karp-Rabin 算法,它是用來解決多模式串匹配問題的,它的實(shí)現(xiàn)方式有點(diǎn)與眾不同,首先是計(jì)算兩個(gè)字符串的哈希值,然后通過比較這兩個(gè)哈希值的大小來判斷是否出現(xiàn)匹配,本文詳細(xì)介紹了字符串匹配Rabin-Karp算法,需要的朋友可以參考下
    2023-05-05

最新評論