J2KGo v1.0.0发布:高性能、零依赖、纯Go语言JPEG2000图像编解码库
开发OFDGo、PDFGo时,需要处理文档中嵌入的JPEG2000图像。随着接触的文件越来越多,大图解码、内存占用和跨平台部署成了需要持续解决的问题,J2KGo也是从这些实际需求中做起来的。
J2KGo现已发布v1.0.0,并已应用于OFDGo和PDFGo。
原生实现,简化部署J2KGo的编解码由Go原生实现,仅使用标准库,不依赖CGO、动态库或外部程序,也不是对C/C++库的封装。
对于Go项目,可以沿用现有工具链构建和交叉编译,无需额外准备原生库及其运行环境。也支持编译为WebAssembly,在浏览器中处理图像。
编码解码,灵活调用支持J2K裸码流和JP2格式,提供无损、有损编码,以及质量分层、码率控制和感兴趣区域编码能力。
接口尽量贴近Go标准库的使用习惯。导入包后,可以通过image.Decode读取图像,也可以直接调用编解码接口。对于需要保留原始图像数据的场景,还提供分量访问接口,保留样本精度、符号和采样信息,不强制转换为常规显示图像。
大图处理,按需读取支持区域解码、分块读取和降低分辨率解码。生成预览、读取局部或分块处理时,不必每次都将整张图像完整展开。
同时提供库内资源限制、解码并发控制和取消机制,让调用方能根据运行环境和业务需求控制处理过程。
J2KGo虽然起步于OFD、PDF中的图像处理需求,但本身是独立的编解码库,不依赖这两个项目。希望它能为需要处理JPEG2000的Go开发者,提供一个原生实现、依赖简单、方便集成的选择。
项目采用Apache-2.0协议开源,仓库中提供了使用示例。欢迎使用,也欢迎反馈实际文件中遇到的问题。
J2KGo:
https://github.com/xiaoqidun/j2kgoOFDGo:
https://github.com/xiaoqidun/ofdgoPDFGo:
https://github.com/xiaoqidun/pdfgo