开源地址:
https://github.com/xiaoqidun/jbig2写OFD渲染库时弄的,OFD很多发票图片就是JBIG2编码的,迫于Go生态无纯Go JBIG2解码器,兼容了png、jpg这种标准库用法,如果你的程序用的是标准库那套方式,你只需要这样_ "github.com/xiaoqidun/jbig2"导包,不做任何代码调整,你的程序就支持了JBIG2图像解码。
package main
import (
"image"
"image/png"
"log"
"os"
_ "github.com/xiaoqidun/jbig2"
)
func main() {
// 1. 打开JB2文件
file, err := os.Open("test.jb2")
if err != nil {
log.Fatal(err)
}
defer file.Close()
// 2. 标准方式解码
img, format, err := image.Decode(file)
if err != nil {
log.Fatal(err)
}
// 3. 输出PNG文件
outFile, err := os.Create("test.png")
if err != nil {
log.Fatal(err)
}
defer outFile.Close()
if err := png.Encode(outFile, img); err != nil {
log.Fatal(err)
}
log.Printf("格式: %s, 宽度: %d, 高度: %d, 已输出到 test.png\n", format, img.Bounds().Dx(), img.Bounds().Dy())
}