亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2024年03月28日 10:59:20   作者:會編程的大白熊  
通過添加依賴,轉換函數(shù)和單元測試操作步驟來解決將bitmap位圖文件另存為png格式文件,本文通過實例代碼給大家介紹的非常詳細,對rust bitmap位另存為png格式的操作方法感興趣的朋友一起看看吧

本文提供了一種將bitmap位圖文件另存為png格式文件的方法。

添加依賴

cargo add image

轉換函數(shù)

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();
    // 創(chuàng)建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();
}

到此這篇關于rust如何將bitmap位圖文件另存為png格式的文章就介紹到這了,更多相關rust bitmap位另存為png格式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • rust多個mod文件引用和文件夾mod使用注意事項小結

    rust多個mod文件引用和文件夾mod使用注意事項小結

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

    Rust語言之Copy和Clone詳解

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

    Rust日期與時間的操作方法

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

    Rust中引用的具體使用

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

    詳解thiserror庫在Rust中的使用

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

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

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

    RUST異步流處理方法詳細講解

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

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

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

    一文帶你了解Rust是如何處理錯誤的

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

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

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

最新評論