gpt4 book ai didi

rust - 我如何从图像::ImageBuffer到actix_web::HttpResponse

转载 作者:行者123 更新时间:2023-12-03 11:38:07 24 4
gpt4 key购买 nike

目标是使用 crate qrcode生成二维码,并立即将其作为png文件发送,以便使用actix-web下载
到目前为止,我有:

let qr = QrCode::new(&format!("http://example.com/{}", &link_id)).unwrap();
let png: ImageBuffer<Luma<u8>, Vec<u8>> = qr.render::<Luma<u8>>().build();
其中包含qrcode。我可以使用 .save()方法将其保存到文件中。但是理想情况下,我不会承担这些开销,而是立即发送文件。但是我无法将正确的数据传递给 actix-web
我尝试了以下方法,这些方法可以编译,但只会发送无法查看的错误图像:
HttpResponse::Ok()
.set(ContentType::png())
.body(Bytes::from(png.into_raw()))

最佳答案

像这样:

    let qr = QrCode::new("http://example.com/xyz").unwrap();
let png: ImageBuffer<Luma<u8>, Vec<u8>> = qr.render::<Luma<u8>>().build();
let mut w = Cursor::new(Vec::new());
DynamicImage::ImageLuma8(png)
.write_to(&mut w, ImageOutputFormat::Png)
.unwrap();
let vec = w.into_inner();
// vec now contains the PNG bytes

关于rust - 我如何从图像::ImageBuffer到actix_web::HttpResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66085977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com