Image processing 如何将DynamicImage转换为Base64?

Image processing 如何将DynamicImage转换为Base64?,image-processing,rust,base64,Image Processing,Rust,Base64,我可以使用image和Base64板条箱将Base64字符串转换为DynamicImage,但我无法将图像转换回Base64字符串 我做错了什么?如何做到这一点 extern crate base64; extern crate image; fn main() { /* Base64 to image let img_buffer = base64::decode("qwerty...").unwrap(); let mut base_img

我可以使用
image
Base64
板条箱将Base64字符串转换为
DynamicImage
,但我无法将图像转换回Base64字符串

我做错了什么?如何做到这一点

extern crate base64;
extern crate image;

fn main() {
    /*
    Base64 to image
        let img_buffer = base64::decode("qwerty...").unwrap();
        let mut base_img = image::load_from_memory(img_buffer.as_slice()).unwrap();

    */

    let mut base_img = image::open("player.png").unwrap();

    base_img.invert();

    // base_img.save("player1.png").unwrap();

    // image to Base64
    let res_base64 = base64::encode(base_img.raw_pixels().as_slice());

    println!("{}", res_base64)
}
原始图像的Base64值

IVBORW0KGGOAAAANSUHEUGAAGAAAAICAYAAAD0ENT6AACXBIWXMAA7AAA7AAOxAGVKW4BAAAGALEQVR42UYDD5HLRZN/v1Un3dzdt/P0PJ6ENANANXFEKG4UR6667UQUICIKCIKUIKJ7U3CN66或VxBMMDYHLOM90ZNFVK6R98E9ICO0KF73U5+P8+DjPBwZrpO1Xm。。。
Gimp反转图像的Base64值

IVBORW0KGGOAAAANSUHEUGAAGAAAAAGAAAAACAYAAAD0ENT6AAAABMJLR0QA/wD/AP+GVAETAAAACXBIWXMAAA7AAAAOxAGVKW4BAAAB3RJTUH4WGCWQF4N2QAAIbJREFUNRSVXMC3FWZ7。。。
我得到的响应不是正确的Base64值:

///AP///wD///8A///AP///wD///8A///AP///wD///8A///AP///wD///8A///AP///wD///8A///AP///wD///8A///AP///wD///8A///。。。

原始图像和Gimp图像的Base64值表示PNG编码图像。您得到的响应表示原始像素数据。在编码为Base64之前,需要将数据转换为PNG。这应该做到:

let mut buf = vec![[]];
base_img.write_to(&mut buf, image::ImageOutputFormat::PNG);
let res_base64 = base64::encode(&buf);

当您尝试运行该代码时会发生什么?如果无法编译或无法运行,请在问题中粘贴完整的错误消息。如果它运行但给出了一个“错误”的结果,请告诉我们实际结果和预期结果是什么,以便我们能够了解发生了什么。我已经添加了更多详细信息,请检查。thanksIt在等一个输入的矢量向量![]之后,它工作得很好。谢谢