Compare commits

...
2 Commits
Author SHA1 Message Date
xiaoqidun c82c810c9e feat(图像解码): 升级JBIG2到v1.0.0
build.yaml / build (push) Successful in 41s
2026-09-12 15:23:43 +08:00
xiaoqidun 5a6d5ae419 feat(内存占用): 优化数值解析与页面缓存,减少内存分配和重复处理 2026-09-12 14:32:39 +08:00
4 changed files with 10 additions and 10 deletions

No files matched your search

+1 -1
View File
@@ -5,7 +5,7 @@ go 1.26.0
require ( require (
github.com/tdewolff/canvas v0.0.0-20260901160717-dae8cd8e19a7 github.com/tdewolff/canvas v0.0.0-20260901160717-dae8cd8e19a7
github.com/tdewolff/font v0.0.0-20260822205238-d0d2f004b117 github.com/tdewolff/font v0.0.0-20260822205238-d0d2f004b117
github.com/xiaoqidun/jbig2 v0.0.0-20260912052037-9a7cadfca98c github.com/xiaoqidun/jbig2 v1.0.0
golang.org/x/image v0.46.0 golang.org/x/image v0.46.0
golang.org/x/text v0.42.0 golang.org/x/text v0.42.0
) )
+2 -2
View File
@@ -71,8 +71,8 @@ github.com/tdewolff/test v1.0.12 h1:7F21DqIajswxuche0geHdrUZRCWE4oko4b7bcmkkrxk=
github.com/tdewolff/test v1.0.12/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8= github.com/tdewolff/test v1.0.12/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8=
github.com/wcharczuk/go-chart/v2 v2.1.2 h1:Y17/oYNuXwZg6TFag06qe8sBajwwsuvPiJJXcUcLL6E= github.com/wcharczuk/go-chart/v2 v2.1.2 h1:Y17/oYNuXwZg6TFag06qe8sBajwwsuvPiJJXcUcLL6E=
github.com/wcharczuk/go-chart/v2 v2.1.2/go.mod h1:Zi4hbaqlWpYajnXB2K22IUYVXRXaLfSGNNR7P4ukyyQ= github.com/wcharczuk/go-chart/v2 v2.1.2/go.mod h1:Zi4hbaqlWpYajnXB2K22IUYVXRXaLfSGNNR7P4ukyyQ=
github.com/xiaoqidun/jbig2 v0.0.0-20260912052037-9a7cadfca98c h1:ZnB6Js4yt9X3hcM3X+ddZUgHAD4VKoAO5EIwZxFET98= github.com/xiaoqidun/jbig2 v1.0.0 h1:Wt434JKS7j7LqHnMSL/3yatRCxjOfDiA+RhZA/DhAAo=
github.com/xiaoqidun/jbig2 v0.0.0-20260912052037-9a7cadfca98c/go.mod h1:8QonVWtENmh2kc6l+leqeGl7psb79DWlHDkCpdChjfQ= github.com/xiaoqidun/jbig2 v1.0.0/go.mod h1:8QonVWtENmh2kc6l+leqeGl7psb79DWlHDkCpdChjfQ=
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+6 -6
View File
@@ -25,8 +25,8 @@ func (r *Renderer) renderAnnotations(ctx *canvas.Context, pageID string, pageH f
} }
box, _ := ParseBox(annot.Appearance.Boundary) box, _ := ParseBox(annot.Appearance.Boundary)
ctm := Matrix{a: 1, d: 1, e: box.X, f: box.Y} ctm := Matrix{a: 1, d: 1, e: box.X, f: box.Y}
for _, obj := range annot.Appearance.Objects { for i := range annot.Appearance.Objects {
r.renderObject(ctx, obj, pageH, nil, &ctm, false, nil) r.renderObject(ctx, &annot.Appearance.Objects[i], pageH, nil, &ctm, false, nil)
} }
} }
} }
@@ -92,8 +92,8 @@ func (r *Renderer) renderLayers(ctx *canvas.Context, layers []Layer, pageH float
func (r *Renderer) renderLayer(ctx *canvas.Context, layer Layer, pageH float64, defaults *DrawParam, parentCTM *Matrix) { func (r *Renderer) renderLayer(ctx *canvas.Context, layer Layer, pageH float64, defaults *DrawParam, parentCTM *Matrix) {
defaults = r.drawParamDefaults(layer.DrawParam, defaults) defaults = r.drawParamDefaults(layer.DrawParam, defaults)
if len(layer.Objects) > 0 { if len(layer.Objects) > 0 {
for _, obj := range layer.Objects { for i := range layer.Objects {
r.renderObject(ctx, obj, pageH, defaults, parentCTM, false, nil) r.renderObject(ctx, &layer.Objects[i], pageH, defaults, parentCTM, false, nil)
} }
return return
} }
@@ -143,7 +143,7 @@ func (r *Renderer) renderCompositeGraphicUnit(ctx *canvas.Context, cgu Composite
if len(cgu.Objects) > 0 { if len(cgu.Objects) > 0 {
for _, obj := range cgu.Objects { for _, obj := range cgu.Objects {
obj = mergeGraphicObjectAlpha(obj, cgu.Alpha) obj = mergeGraphicObjectAlpha(obj, cgu.Alpha)
r.renderObject(ctx, obj, pageH, defaults, &currentCTM, boundaryInCTM, clipPath) r.renderObject(ctx, &obj, pageH, defaults, &currentCTM, boundaryInCTM, clipPath)
} }
ctx.Pop() ctx.Pop()
return return
@@ -169,7 +169,7 @@ func (r *Renderer) renderCompositeGraphicUnit(ctx *canvas.Context, cgu Composite
// renderObject 渲染图形对象 // renderObject 渲染图形对象
// 入参: ctx 画布上下文, obj 图形对象, pageH 页面高度, defaults 默认绘制参数, parentCTM 父级CTM, boundaryInCTM 边界是否参与CTM变换, parentClip 父级裁剪路径 // 入参: ctx 画布上下文, obj 图形对象, pageH 页面高度, defaults 默认绘制参数, parentCTM 父级CTM, boundaryInCTM 边界是否参与CTM变换, parentClip 父级裁剪路径
func (r *Renderer) renderObject(ctx *canvas.Context, obj GraphicObject, pageH float64, defaults *DrawParam, parentCTM *Matrix, boundaryInCTM bool, parentClip *canvas.Path) { func (r *Renderer) renderObject(ctx *canvas.Context, obj *GraphicObject, pageH float64, defaults *DrawParam, parentCTM *Matrix, boundaryInCTM bool, parentClip *canvas.Path) {
switch obj.Type { switch obj.Type {
case "TextObject": case "TextObject":
r.renderText(ctx, obj.TextObject, pageH, defaults, parentCTM, boundaryInCTM, parentClip) r.renderText(ctx, obj.TextObject, pageH, defaults, parentCTM, boundaryInCTM, parentClip)
+1 -1
View File
@@ -359,7 +359,7 @@ func (r *Renderer) renderPattern(ctx *canvas.Context, pattern *patternPaint, pag
} }
for _, obj := range pattern.CellContent.Objects { for _, obj := range pattern.CellContent.Objects {
obj = mergeGraphicObjectAlpha(obj, pattern.alpha) obj = mergeGraphicObjectAlpha(obj, pattern.alpha)
r.renderObject(ctx, obj, pageH, defaults, &tileCTM, true, clip) r.renderObject(ctx, &obj, pageH, defaults, &tileCTM, true, clip)
} }
} }
} }