#jpeg2000 #jp2 #openjpeg

jp2k

将 JPEG200 图像加载到图像的接口

4 个版本 (2 个破坏性版本)

0.3.1 2019 年 10 月 28 日
0.3.0 2019 年 10 月 28 日
0.2.0 2019 年 10 月 3 日
0.1.0 2019 年 9 月 6 日

图像 中排名第 485

每月下载次数 23

MIT/Apache

195KB
4.5K SLoC

jp2k

OpenJPEG 的 Rust 绑定

支持将 JPEG2000 图像加载到 image::DynamicImage.Rust

在 GPL-v3 重新授权之前从 https://framagit.org/leoschwarz/jpeg2000-rust 分支,增加了某些功能

  • 除了缩减因子外,还指定解码区域和质量层
  • 改进了 OpenJPEG -> DynamicImage 加载过程
  • 从 JPEG2000 标题获取基本元数据
  • 文档(尽管是最小限度的)

此库包含自己的 libopenjpeg,是静态链接的。如果您只需要原始 FFI 绑定,请参阅 openjpeg2-sysopenjpeg-sys

用法

fn main() {
    let bytes = include_bytes!("./rust-logo-512x512-blk.jp2");

    let jp2k::Image(img) = jp2k::Image::from_bytes(
        bytes,
        jp2k::Codec::JP2,
        Some(jp2k::DecodeParams::default().with_decoding_area(0, 0, 256, 256))
    )
    .unwrap();

    let mut output = std::path::Path::new("examples/output/result.png");
    let _ = img.save(&mut output);
}

原始警告和许可声明

警告

请注意,使用 C 代码意味着此 crate 可能容易受到各种内存漏洞的影响,例如,请参阅 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8332 以了解过去的实际示例。

一旦有人用纯 Rust 编写了有效的 JPEG2000 解码器,您可能应该切换到那个。

许可

您可以在 srcopenjp2-sys/src 目录下使用 Rust 代码,其条款为 MIT 许可证(LICENSE-MIT 文件)或 Apache 许可证(LICENSE-APACHE 文件)。请注意,这将静态链接到 OpenJPEG,它有自己的许可证,您可以在 openjpeg-sys/libopenjpeg/LICENSE 中找到(您可能需要首先检出 git 子模块)。

许可证:MIT 或 Apache-2.0

依赖项

~0–1.9MB
~37K SLoC