From 1004781aed8e8ba674436ce9419acbf19b030b68 Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Mon, 13 Jul 2026 16:17:08 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=8F=90=E5=8D=87=E6=80=A7=E8=83=BD):=20?= =?UTF-8?q?=E6=9B=B4=E5=BF=AB=E7=9A=84=E5=8A=A0=E8=BD=BD=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ofdgo_image.go | 13 +++++++++++++ ofdgo_renderer_image.go | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/ofdgo_image.go b/ofdgo_image.go index ed7dd67..cc6f239 100644 --- a/ofdgo_image.go +++ b/ofdgo_image.go @@ -21,6 +21,7 @@ import ( "image" "image/color" + canvas_image "github.com/tdewolff/canvas/image" _ "github.com/xiaoqidun/jbig2" _ "golang.org/x/image/bmp" ) @@ -29,6 +30,18 @@ import ( // 入参: data 图片数据 // 返回: image.Image 图片对象, string 图片格式, error 错误信息 func decodeImageData(data []byte) (image.Image, string, error) { + if _, format, err := image.DecodeConfig(bytes.NewReader(data)); err == nil { + switch format { + case "jpeg": + if img, err := canvas_image.NewJPEGImage(bytes.NewReader(data)); err == nil { + return img, format, nil + } + case "png": + if img, err := canvas_image.NewPNGImage(bytes.NewReader(data)); err == nil { + return img, format, nil + } + } + } img, format, err := image.Decode(bytes.NewReader(data)) if err == nil { return img, normalizeSealType(format), nil diff --git a/ofdgo_renderer_image.go b/ofdgo_renderer_image.go index 75eea20..a525026 100644 --- a/ofdgo_renderer_image.go +++ b/ofdgo_renderer_image.go @@ -19,6 +19,7 @@ import ( "image/color" "github.com/tdewolff/canvas" + canvas_image "github.com/tdewolff/canvas/image" ) // renderImage 渲染图片 @@ -112,6 +113,9 @@ func imageWithTransparentEdge(img image.Image) (image.Image, int) { if w == 0 || h == 0 { return img, 0 } + if src, ok := img.(*canvas_image.Image); ok && src.Mimetype == "image/jpeg" && src.Mask == nil { + return img, 0 + } if opaque, ok := img.(interface{ Opaque() bool }); ok && opaque.Opaque() { return img, 0 }