首页 > 解决方案 > Rust dxgcap 从 Vec 转换打印到 Vec

问题描述

使用 crate dxgcap 如何使用图像板条箱将 capture_frame fn 的响应保存到文件中。我还想裁剪图像,因此转换为 Vec 会很有趣

注意:capture_frame 返回Vec<dxgcap::BGRA8>的 BGRA8 是结构体,r,g,b,a 都是 u8。

标签: rust

解决方案


内部类型的转换Vec很棘手,因为Vec与内存分配器交互并承诺报告准确的分配大小和完全相同的对齐方式,这可能因类型而异。这很麻烦并且可能不安全。

如果您只需要将元素作为连续u8切片读取,则:

let bytes = std::slice::from_raw_parts(vec.as_ptr() as *const u8, vec.len() * 4);

如果您控制使用的类型,请查看bytemuck crate,它具有转换字节和从字节转换的特征。


推荐阅读