#image #jpeg2000 #j2k

bin+lib jpeg2k-sandboxed

沙盒 Openjpeg 图像解码器

7 个不稳定版本 (3 个重大变更)

0.9.1 2024 年 7 月 11 日
0.8.0 2024 年 7 月 10 日
0.7.0 2024 年 4 月 20 日
0.6.3 2023 年 4 月 10 日
0.6.2 2023 年 3 月 8 日

WebAssembly 中排名 #249

Download history 2/week @ 2024-04-27 4/week @ 2024-05-18 1/week @ 2024-05-25 190/week @ 2024-07-06 20/week @ 2024-07-13

每月下载量 357

MIT/Apache

425KB
354

jpeg2k-sandboxed

沙盒 Jpeg2k 图像解码器。jpeg2k 解码器(使用 openjpeg-sys)编译为 WASI 模块,并使用 wasmtime 进行沙盒化。

构建

可以通过运行 ./rebuild-wasi-decoder.sh 重建 ./src/wasi-decoder.wasm 文件。

需要 wasi-sdk

示例:将 Jpeg 2000 图像转换为 png 图像。

use jpeg2k_sandboxed::*;

fn main() {
	// The decoder object can be shared across threads.
  let decoder = Jpeg2kSandboxed::new().expect("Failed to load decoder");

  let mut file = File::open("./assets/example.j2k").expect("Failed to open file.");
  let mut buf = Vec::new();
  file.read_to_end(&mut buf).expect("Failed to read file.");

  // Request decoding of image from bytes.
  let req = DecodeImageRequest::new(buf);
  let image = decoder.decode(&req).expect("Decode failed.");

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

  // Save as png file.
  img.save("out.png")?;
}

依赖项

~0.9–19MB
~252K SLoC