[英]Convert &Vec<u8> RGB Data to ImageBuffer Rust
货运.toml
image = "0.23.12"
fltk = "0.10.14"
我想使用 rust 的图像箱将 rgb 数据保存为 jpeg 文件:
use image::{RgbImage};
use image::ImageBuffer;
use fltk::{image::RgbImage, button::*};
let sourceImg = image::open("imgs/2.jpg").unwrap();
let rgb = RgbImage::new(&sourceImg.to_bytes(), x, y, 3).unwrap();
let mut prevWindowImgButton = Button::new(0,0, 300, 300, "");
prevWindowImgButton.set_image(Some(&rgb));
let rgbData= &prevWindowImgButton.image().unwrap().to_rgb_data();
//returns rgb data with type &Vec<u8>
rgbData.save("out/outputtest.jpg");
给出错误:
testRGB.save("out/outputtest.jpg");
| ^^^^ method not found in `&Vec<u8>`
因为.save 必须在 ImageBuffer 上使用。 那么如何将此 rgb 数据转换为 ImageBuffer 呢?
如果您只想使用image
箱将原始缓冲区保存到图像文件,您可以使用save_buffer_with_format
函数:
use image::io::Reader;
use image::save_buffer_with_format;
fn main() {
// The following three lines simply load a test image and convert it into buffer
let img = Reader::open("myimage.png").unwrap().decode().unwrap().to_rgb8();
let (width, height) = (img.width(), img.height());
let img_byte_vec = img.into_raw();
// The next line is what you want
save_buffer_with_format("myimg.jpg", &img_byte_vec, width, height, image::ColorType::Rgb8, image::ImageFormat::Jpeg).unwrap();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.