锈图像发布请求

时间:2019-02-19 06:55:05

标签: image rust qr-code

我使用qrcode-rust将其结果作为image :: ImageBuffer返回。我需要将png结果发布到Thumbor服务器。如何将该图像缓冲区转换为Vec?。

我在下面尝试代码,但是我的buf搬了,我对此无能为力。

let code = QrCode::new(arg1.as_bytes()).unwrap();
let images = code.render::<Luma<u8>>().build();
let mut buf: Vec<u8> = Vec::new();
let dims = images.dimensions();
let mut headers = HeaderMap::new();

image::png::PNGEncoder::new(buf)
    .encode(&images.into_raw(), dims.0, dims.1, ColorType::Gray(8))
    .expect("Error on encoding to png");

let len = buf.len(); //error here
headers.insert(CONTENT_TYPE, "image/png".parse().unwrap());
headers.insert("Slug", "photo.jpg".parse().unwrap());

1 个答案:

答案 0 :(得分:0)

我从How do I encode a Rust Piston image and get the result in memory?复制了答案并进行了更改

image::png::PNGEncoder::new(buf.by_ref()))
    .encode(
         &images.into_raw(), 
         dims.0, 
         dims.1, 
         ColorType::Gray(8),
    ).expect("Error on encoding to png");

现在一切正常。