diff --git a/cz/src/common.rs b/cz/src/common.rs index f5e2ccb..7f32e9c 100644 --- a/cz/src/common.rs +++ b/cz/src/common.rs @@ -408,9 +408,13 @@ pub fn indexed_gen_palette( input: &[u8], header: &CommonHeader, ) -> Result<(Vec, Vec>), CzError> { + let size = (header.width() as u32 * header.height() as u32) * 4; + + let mut buf = vec![0; size as usize]; + buf[..input.len()].copy_from_slice(&input); let image = Image::new( - input, + &buf, header.width() as usize, header.height() as usize ).unwrap(); diff --git a/cz/src/dynamic.rs b/cz/src/dynamic.rs index be9e622..918f983 100644 --- a/cz/src/dynamic.rs +++ b/cz/src/dynamic.rs @@ -71,7 +71,7 @@ impl DynamicCz { if bitmap.len() != image_size * (header_common.depth() >> 3) as usize { // If the bitmap is smaller or larger than the image size, it is likely wrong eprintln!("Image is wrong, length is {}, expected {}", bitmap.len(), image_size * (header_common.depth() >> 3) as usize); - //return Err(CzError::Corrupt); + return Err(CzError::Corrupt); } match header_common.depth() { diff --git a/utils/src/main.rs b/utils/src/main.rs index 5a8a5dc..b08144b 100644 --- a/utils/src/main.rs +++ b/utils/src/main.rs @@ -14,7 +14,8 @@ fn main() { let mut gallery_cz = DynamicCz::open("24.cz2").unwrap(); gallery_cz.save_as_png("24.png").unwrap(); - //gallery_cz.header_mut().set_depth(8); + gallery_cz.set_bitmap(new_bitmap.into_vec()); + gallery_cz.header_mut().set_depth(8); gallery_cz.remove_palette(); gallery_cz.header_mut().set_version(CzVersion::CZ2); gallery_cz.save_as_cz("24-modified.cz2").unwrap();