jpeg2k

Safe wrapper for openjpeg-sys with Bevy asset support.

Example: Bevy asset loader

```rust use std::fs::File; use std::io::prelude::*; use std::env;

use anyhow::Result;

use image::DynamicImage;

use jpeg2k::*;

fn main() -> Result<()> { let jp2filename = env::args().nth(1) .unwraporelse(|| "test.j2k".tostring()); let savename = env::args().nth(2) .unwraporelse(|| "test.jpg".to_string());

// Load file bytes.

let mut file = File::open(jp2filename)?; let mut buf = Vec::new(); file.readto_end(&mut buf)?;

// Load jpeg 2000 file from bytes.

let jp2image = Image::frombytes(&mut buf)?;

println!("jp2image: width={:?}, height={:?}", jp2image.width(), jp2_image.height());

// Convert to a `image::DynamicImage`

let img: DynamicImage = jp2image.tryinto()?;

// Using `image` crate to save image to another format: png, jpg, etc...

img.save(&savename)?;

println!("Saved to: {}", savename); Ok(()) } ```

Example: Bevy asset loader

```rust use bevy::prelude::*;

use jpeg2k::*;

fn main() { App::build() .add_plugins(DefaultPlugins)

    // Load the Jpeg 2000 asset loader plugin.
.add_plugin(Jpeg2KPlugin)

.add_startup_system(setup.system())
.run();

}

fn setup( assetserver: Res, ) { // Load j2k, jp2, j2c, images. let texturehandle = asset_server.load("example.j2k"); // }

```