use std::error::Error;
use heif::{Chroma, HeifEncoder, Preset};
const SOURCE: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/assets/image.jpg");
fn main() -> Result<(), Box<dyn Error>> {
let img = image::open(SOURCE)?;
let mut bytes = Vec::new();
img.write_with_encoder(
HeifEncoder::new(&mut bytes)
.with_quality(80) .with_preset(Preset::Fast) .with_chroma(Chroma::Yuv444), )?;
let out = concat!(env!("CARGO_MANIFEST_DIR"), "/assets/custom-encoder-example.heic");
std::fs::write(out, &bytes)?;
println!(
"encoded {} bytes (quality 80, preset fast, 4:4:4) -> {}",
bytes.len(),
out
);
Ok(())
}