1use image::{ImageBuffer, Rgb, RgbImage};
2
3pub struct DataRecord {
4 pub raw: Vec<u8>,
5}
6
7pub struct Bhtmp {
8 pub headers: Vec<u8>,
9 pub records: Vec<DataRecord>,
10}
11
12impl Bhtmp {
13 pub fn new(bytes: Vec<u8>) -> Self {
14 let headers = bytes.get(0..16).unwrap();
16 let data = bytes.get(16..).unwrap();
18
19 let mut records: Vec<DataRecord> = vec![];
21 for i in data.chunks(8) {
22 records.push(DataRecord {
23 raw: i.iter().map(|v| *v).collect(),
24 })
25 }
26
27 Self {
28 headers: headers.iter().map(|v| *v).collect(),
29 records: records,
30 }
31 }
32
33 pub fn to_image(self: &Self, bitidx: usize) -> RgbImage {
34 let mut image: RgbImage = ImageBuffer::new(100, 100);
35
36 for (i, rec) in self.records.iter().enumerate() {
37 image.put_pixel(
38 (i % 100) as u32,
39 (i / 100) as u32,
40 Rgb([rec.raw[bitidx], rec.raw[bitidx], rec.raw[bitidx]]),
41 )
42 }
43
44 return image;
45 }
46}