这个问题在这里已有答案:
我使用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());
我复制了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");
现在一切正常。