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

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

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>
}