use turbojpeg::{Decompressor, Image, PixelFormat, ScalingFactor};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let jpeg_data = std::fs::read("examples/parrots.jpg")?;
let mut decompressor = Decompressor::new()?;
let scale = ScalingFactor::new(7, 8);
let header = decompressor.read_header(&jpeg_data)?.scaled(scale);
println!("{}x{}", header.width, header.height);
let mut image = Image {
pixels: vec![0; 3 * header.width * header.height],
width: header.width,
pitch: 3 * header.width, height: header.height,
format: PixelFormat::RGB,
};
decompressor.set_scaling_factor(scale)?;
decompressor.decompress(&jpeg_data, image.as_deref_mut())?;
println!("{:?}", &image.pixels[0..9]);
let mut compressor = turbojpeg::Compressor::new()?;
compressor.set_quality(99)?;
let jpeg_data = compressor.compress_to_vec(image.as_deref())?;
std::fs::write("examples/downscaled.tmp.jpg", jpeg_data)?;
Ok(())
}