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

标签 rust png httpresponse qr-code actix-web

目标是使用 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/

相关文章:

objective-c - 使用 Objective C 将位图转换为 PNG 或 JPG

java - 为什么 HttpURLConnection.getResponseCode() 抛出 IOException?

laravel - Laravel 中返​​回 ResourceCollection 时如何返回 HTTP 状态代码

javascript - JavaScript 应用程序拒绝向 Rust Rocket 服务器发出错误连接请求

dynamic - 如何为 Box<dyn Trait> 字段指定关联类型的值?

asp.net - PNG 覆盖使 asp 超链接不可点击

java - 如何在java中将透明alpha channel 添加回png图像?

png - Rust 中的图像处理库

opengl - 如何在OpenGL中旋转2D正方形?

java - 如何更新印度铁路网站中添加的 PNR 验证码