使用 Rust-Image 程序生成图像
在本文中,我们将学习使用 rust-image 以程序方式生成图像。
使用 Rust-Image 程序生成图像
Crate Image
这个 crate 为图像编码和解码以及基本的图像处理功能提供了原生的 Rust 实现。README.md
文件中还提供了其他文档,可在 GitHub 上方便地查看。
该库为两个基本问题提供了解决方案:图像编码的统一接口和内容的简单通用缓冲区。每个功能都可以独立于其他功能使用。
重点放在一组小而稳定的日常操作上,额外的专用板条箱可以补充这些操作。此外,该库支持具有很少依赖性的安全解决方案。
使用 io::Reader
加载图像:
usestd::io::Cursor;useimage::io::ReaderasImageReader;letimg_one=ImageReader::open("imagetest.png")?.decode()?;letimg_two=ImageReader::new(Cursor::new(bytes)).with_guessed_format()?.decode()?;
要保存图像:
img.save("theimage.jpg")?;letmutbytes: Vec<u8>=Vec::new();img2.write_to(&mutCursor::new(&mutbytes),image::ImageOutputFormat::Png)?;
图像缓冲器
两种主要的图像存储格式:
- 存储静态类型图像数据的
Image buffer
。 -
DynamicImage
是对支持它们之间转换的受支持ImageBuffer
格式的枚举。
除了一些专门的选项:
- 可变图像缓冲区的
GenericImage
特征。 - 只读 GenericImage 引用的
GenericImageView
特征。 -
flat
模块,包含通用通道矩阵和外部接口的互操作性类型。
所有提供的图像处理函数都在实现 GenericImageView
和 GenericImage
特征并返回 ImageBuffer.
的类型上运行。所有图像格式解码器都实现了 ImageDecoder
特征,它提供了检索图像元数据和解码图像的基本方法。
某些格式还提供 ImageDecoderExt
实现,允许一次仅解码图像的一部分。
最关键的解码技术是:
- Dimensions:返回一个包含图像宽度和高度的元组。
2、颜色类型:返回本解码器输出的图像数据的颜色类型。 - 读取图像:将整个图像解码成一个字节数组。
动态图像
DynamicImage
枚举所有支持的 ImageBuffer<P>
类型。其精确的图像类型是在执行期间确定的。
它是打开图像时返回的类型。DynamicImage
为方便起见重新实现了所有图像处理功能。
对于 RGBA 像素,DynamicImage
实现 GenericImageView
和 GenericImage
特征。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。