迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

使用 Rust-Image 程序生成图像

作者:迹忆客 最近更新:2023/03/20 浏览次数:

在本文中,我们将学习使用 rust-image 以程序方式生成图像。

使用 Rust-Image 程序生成图像

Crate Image

这个 crate 为图像编码和解码以及基本的图像处理功能提供了原生的 Rust 实现。README.md 文件中还提供了其他文档,可在 GitHub 上方便地查看。

该库为两个基本问题提供了解决方案:图像编码的统一接口和内容的简单通用缓冲区。每个功能都可以独立于其他功能使用。

重点放在一组小而稳定的日常操作上,额外的专用板条箱可以补充这些操作。此外,该库支持具有很少依赖性的安全解决方案。

使用 io::Reader 加载图像:

use std::io::Cursor;
use image::io::Reader as ImageReader;

let img_one = ImageReader::open("imagetest.png")?.decode()?;
let img_two = ImageReader::new(Cursor::new(bytes)).with_guessed_format()?.decode()?;

要保存图像:

img.save("theimage.jpg")?;

let mut bytes: Vec<u8> = Vec::new();
img2.write_to(&mut Cursor::new(&mut bytes), image::ImageOutputFormat::Png)?;

图像缓冲器

两种主要的图像存储格式:

除了一些专门的选项:

  1. 可变图像缓冲区的 GenericImage 特征。
  2. 只读 GenericImage 引用的 GenericImageView 特征。
  3. flat 模块,包含通用通道矩阵和外部接口的互操作性类型。

所有提供的图像处理函数都在实现 GenericImageViewGenericImage 特征并返回 ImageBuffer. 的类型上运行。所有图像格式解码器都实现了 ImageDecoder 特征,它提供了检索图像元数据和解码图像的基本方法。

某些格式还提供 ImageDecoderExt 实现,允许一次仅解码图像的一部分。

最关键的解码技术是:

  1. Dimensions:返回一个包含图像宽度和高度的元组。
    2、颜色类型:返回本解码器输出的图像数据的颜色类型。
  2. 读取图像:将整个图像解码成一个字节数组。

动态图像

DynamicImage 枚举所有支持的 ImageBuffer<P> 类型。其精确的图像类型是在执行期间确定的。

它是打开图像时返回的类型。DynamicImage 为方便起见重新实现了所有图像处理功能。

对于 RGBA 像素,DynamicImage 实现 GenericImageViewGenericImage 特征。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

用 Rust 读写文件

发布时间:2023/03/21 浏览次数:152 分类:编程语言

本教程演示了在不同版本的 Rust 中读取和写入文件的方式。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便