mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-08-30 12:12:40 +08:00
@@ -21,6 +21,7 @@ import (
|
|||||||
"image"
|
"image"
|
||||||
"image/color"
|
"image/color"
|
||||||
|
|
||||||
|
canvas_image "github.com/tdewolff/canvas/image"
|
||||||
_ "github.com/xiaoqidun/jbig2"
|
_ "github.com/xiaoqidun/jbig2"
|
||||||
_ "golang.org/x/image/bmp"
|
_ "golang.org/x/image/bmp"
|
||||||
)
|
)
|
||||||
@@ -29,6 +30,18 @@ import (
|
|||||||
// 入参: data 图片数据
|
// 入参: data 图片数据
|
||||||
// 返回: image.Image 图片对象, string 图片格式, error 错误信息
|
// 返回: image.Image 图片对象, string 图片格式, error 错误信息
|
||||||
func decodeImageData(data []byte) (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))
|
img, format, err := image.Decode(bytes.NewReader(data))
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return img, normalizeSealType(format), nil
|
return img, normalizeSealType(format), nil
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import (
|
|||||||
"image/color"
|
"image/color"
|
||||||
|
|
||||||
"github.com/tdewolff/canvas"
|
"github.com/tdewolff/canvas"
|
||||||
|
canvas_image "github.com/tdewolff/canvas/image"
|
||||||
)
|
)
|
||||||
|
|
||||||
// renderImage 渲染图片
|
// renderImage 渲染图片
|
||||||
@@ -112,6 +113,9 @@ func imageWithTransparentEdge(img image.Image) (image.Image, int) {
|
|||||||
if w == 0 || h == 0 {
|
if w == 0 || h == 0 {
|
||||||
return img, 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() {
|
if opaque, ok := img.(interface{ Opaque() bool }); ok && opaque.Opaque() {
|
||||||
return img, 0
|
return img, 0
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user