rust - Rust dxgcap 从 Vec 转换打印到 Vec
问题描述
使用 crate dxgcap 如何使用图像板条箱将 capture_frame fn 的响应保存到文件中。我还想裁剪图像,因此转换为 Vec 会很有趣
注意:capture_frame 返回Vec<dxgcap::BGRA8>
的 BGRA8 是结构体,r,g,b,a 都是 u8。
解决方案
内部类型的转换Vec
很棘手,因为Vec
与内存分配器交互并承诺报告准确的分配大小和完全相同的对齐方式,这可能因类型而异。这很麻烦并且可能不安全。
如果您只需要将元素作为连续u8
切片读取,则:
let bytes = std::slice::from_raw_parts(vec.as_ptr() as *const u8, vec.len() * 4);
如果您控制使用的类型,请查看bytemuck crate,它具有转换字节和从字节转换的特征。