rust将bitmap位图文件另存为png格式的方法

 更新时间:2024年03月28日 10:59:20   作者:会编程的大白熊  
通过添加依赖,转换函数和单元测试操作步骤来解决将bitmap位图文件另存为png格式文件,本文通过实例代码给大家介绍的非常详细,对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();
}

到此这篇关于rust如何将bitmap位图文件另存为png格式的文章就介绍到这了,更多相关rust bitmap位另存为png格式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 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语言中,引用机制是其所有权系统的重要组成部分,ust提供了两种类型的引用,不可变引用和可变引用,本文就来详细的介绍一下这两种的用法,感兴趣的可以了解一下
    2024-03-03
  • 详解thiserror库在Rust中的使用

    详解thiserror库在Rust中的使用

    在编程中,错误处理是一个至关重要的部分,在Rust中,我们经常使用Result和Option类型来进行错误处理,但有时,我们需要创建自定义的错误类型,这就是thiserror库发挥作用的地方,可以极大的简化代码,所以本文就给大家介绍一下如何使用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是如何处理错误的

    程序在运行的过程中,总是会不可避免地产生错误,而如何优雅地解决错误,也是语言的设计哲学之一。本文就来和大家来了Rust是如何处理错误的,感兴趣的可以了解一下
    2022-11-11
  • Rust字符串匹配Rabin-Karp算法详解

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

    Rabin-Karp算法也可以叫 Karp-Rabin 算法,它是用来解决多模式串匹配问题的,它的实现方式有点与众不同,首先是计算两个字符串的哈希值,然后通过比较这两个哈希值的大小来判断是否出现匹配,本文详细介绍了字符串匹配Rabin-Karp算法,需要的朋友可以参考下
    2023-05-05

最新评论