生锈图像发布请求[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我使用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());
image rust qr-code
1个回答
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");

现在一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.