Dzwebs.Net

撰写电脑技术杂文十余年

rust打开图片转base64后再保存为图片或通过前端的base64保存为图片

Admin | 2023-6-16 11:00:13 | 被阅次数 | 1250

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  如题所示,本文要解决的问题就是rust方面的涉及到图片转base64码或base64码保存为图片的问题。

  一、需要的库

  [dependencies]
  image="*"
  base64="*"
  image-base64="*"

  二、打开本地图片转为base64后再保存图片

fn openpic_tobase64_tosave_pic(){
    let pic_path = "src/ok.jpg";
    let base64_string= image_base64::to_base64(pic_path);
    let mygetbase64str=base64_string.split(",").nth(1).unwrap();//获取base64编码逗号右边的有效串
    let picformat = match base64_string.as_str(){
        v if v.contains("gif") =>{ImageFormat::Gif},
        v if v.contains("jpeg") =>{ImageFormat::Jpeg},
        v if v.contains("png") =>{ImageFormat::Png},
        _ => panic!("Invalid image type."),
    };
    let bytes = base64::decode(&mygetbase64str).expect("解码Base64字符串发生异常。");
    //let format = ImageFormat::Jpeg;//此处的类型务必与图片文件拓展名保存一致。
    let img = load_from_memory_with_format(&bytes, picformat).expect("图像解码异常。");
    let mut file = BufWriter::new(File::create("output.png").unwrap());
    img.write_to(&mut file, picformat).expect("图像保存发生异常。");
    println!("已成功保存图片!");
}

  三、通过获取前端的base64保存为图片

fn getwebbase64_tosave_pic(){
    let base64_string="data:image/gif;base64,R0lGODlhpAGkAfYAAAA……";
    let mygetbase64str=base64_string.split(",").nth(1).unwrap();//获取base64码逗号右边的有效串
    let bytes = base64::decode(&mygetbase64str).expect("解码Base64字符串发生异常。");
    //let bytes = base64_string.as_bytes().to_vec();//类型一致,但是这个就是不行
    let picformat = match base64_string{
        v if v.contains("gif") =>{ImageFormat::Gif},
        v if v.contains("jpeg") =>{ImageFormat::Jpeg},
        v if v.contains("png") =>{ImageFormat::Png},
        _ => panic!("Invalid image type."),
    };
    let img = load_from_memory_with_format(&bytes, picformat).expect("图像解码异常。");
    let mut file = BufWriter::new(File::create("output.png").unwrap());
    img.write_to(&mut file, picformat).expect("图像保存发生异常。");
    println!("已成功保存图片!");
}


该杂文来自: 最新技术

上一篇:rust调用c++的DLL库提示找不到DLL文件的解决办法(

下一篇:rust 把option中的内容match出来

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计