我使用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());
答案 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");
现在一切正常。