jpeg2k 0.2.0

Safe wrapper for openjpeg-sys with Bevy asset support.
Documentation
# jpeg2k
Safe wrapper for `openjpeg-sys` with Bevy asset support.

## Example: Bevy asset loader

```rust
use std::env;

use anyhow::Result;

use image::DynamicImage;

use jpeg2k::*;

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

  // Load jpeg 2000 file from file.
  let jp2_image = Image::from_file(jp2_filename)?;

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

  // Convert to a `image::DynamicImage`
  let img: DynamicImage = jp2_image.try_into()?;

  // 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(
  asset_server: Res<AssetServer>,
) {
  // Load j2k, jp2, j2c, images.
  let texture_handle = asset_server.load("example.j2k");
  // <Use the texture handle>
}

```