image icon indicating copy to clipboard operation
image copied to clipboard

Can't load image from byte slice

Open mztlive opened this issue 2 years ago • 3 comments

I have an image base64, which can be encoded and saved to a file via C#, but image-rs cannot.

MemoryStream ms = new MemoryStream(
            Convert.FromBase64String(
                "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"
                )
            );

Bitmap b = new Bitmap(ms);
b.Save("test.jpg");

// The picture will be saved successfully and can be browsed normally

The picture is like this: image

Below is the rust code:

let b64 = "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";
let bytes = general_purpose::STANDARD.decode(b64).unwrap();
let unit_image = image::load_from_memory(&bytes).unwrap();

// Here you get an error:  'called `Result::unwrap()` on an `Err` value: Decoding(DecodingError { format: Exact(Jpeg), underlying: Some(Format("a maximum of two huffman tables per class are allowed in baseline")) })'

Now I want to know, how can I use rust to convert this base64 to an image and save it on disk.

Thanks!!!!!

mztlive avatar Jan 17 '23 04:01 mztlive

If you simply want to write the file to disk you can use std::fs::write("test.jpg", bytes).unwrap(). Unfortunately, this crate currently isn't capable of parsing your JPEG file so doing more advanced processing isn't possible at the moment

Based on the error message, it looks like the file uses a fancy encoding option. It should be possible to add support for it to the https://github.com/image-rs/jpeg-decoder crate, but I have no idea how much work that might be

fintelia avatar Jan 17 '23 04:01 fintelia

If you simply want to write the file to disk you can use std::fs::write("test.jpg", bytes).unwrap(). Unfortunately, this crate currently isn't capable of parsing your JPEG file so doing more advanced processing isn't possible at the moment

Based on the error message, it looks like the file uses a fancy encoding option. It should be possible to add support for it to the https://github.com/image-rs/jpeg-decoder crate, but I have no idea how much work that might be

Yes, I can directly fs::write save as jpg However, I have many such small pictures that need to be spliced ​​together to form a large picture.

mztlive avatar Jan 17 '23 05:01 mztlive

Maybe you should try this

let bytes = general_purpose::STANDARD.decode(b64).unwrap();
let unit_image = image::load(std::io::Cursor::new(bytes), image::ImageFormat::Jpeg).unwrap();

AAlieZZ avatar Dec 21 '23 06:12 AAlieZZ