Allow saving PNG files from CZs with bitmaps which are incorrectly sized

This commit is contained in:
G2-Games 2024-05-22 06:22:52 -05:00
parent 74ee617a04
commit 67700df6ef
3 changed files with 8 additions and 3 deletions

View file

@ -408,9 +408,13 @@ pub fn indexed_gen_palette(
input: &[u8],
header: &CommonHeader,
) -> Result<(Vec<u8>, Vec<image::Rgba<u8>>), 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();

View file

@ -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() {

View file

@ -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();