Skip to content

Commit ce3fc5a

Browse files
committed
fix: replace png.Decode with imaging.Decode in WoxImage.ToImage method and add test for Base64 JPEG decoding
1 parent cab9a7a commit ce3fc5a

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

wox.core/common/image.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ func (w *WoxImage) ToImage() (image.Image, error) {
145145
}
146146

147147
imgReader := bytes.NewReader(decodedData)
148-
return png.Decode(imgReader)
148+
return imaging.Decode(imgReader)
149149
}
150150
if w.ImageType == WoxImageTypeSvg {
151151
width, height := 32, 32

wox.core/common/image_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package common
22

33
import (
4+
"bytes"
5+
"encoding/base64"
46
"fmt"
7+
"image"
8+
"image/color"
9+
"image/jpeg"
510
"testing"
611
"wox/util"
712

@@ -39,3 +44,27 @@ func TestWoxImage_Emoji(t *testing.T) {
3944
imaging.Save(img, path)
4045
t.Log(path)
4146
}
47+
48+
func TestWoxImage_ToImage_Base64JPEG(t *testing.T) {
49+
src := image.NewRGBA(image.Rect(0, 0, 2, 2))
50+
src.Set(0, 0, color.RGBA{R: 255, G: 0, B: 0, A: 255})
51+
src.Set(1, 0, color.RGBA{R: 0, G: 255, B: 0, A: 255})
52+
src.Set(0, 1, color.RGBA{R: 0, G: 0, B: 255, A: 255})
53+
src.Set(1, 1, color.RGBA{R: 255, G: 255, B: 0, A: 255})
54+
55+
buf := bytes.NewBuffer(nil)
56+
if err := jpeg.Encode(buf, src, &jpeg.Options{Quality: 90}); err != nil {
57+
t.Fatalf("failed to encode jpeg: %v", err)
58+
}
59+
60+
base64Jpeg := fmt.Sprintf("data:image/jpeg;base64,%s", base64.StdEncoding.EncodeToString(buf.Bytes()))
61+
woxImage := NewWoxImageBase64(base64Jpeg)
62+
img, err := woxImage.ToImage()
63+
if err != nil {
64+
t.Fatalf("expected jpeg base64 can be decoded, got err: %v", err)
65+
}
66+
67+
if img.Bounds().Dx() != 2 || img.Bounds().Dy() != 2 {
68+
t.Fatalf("unexpected image size: %dx%d", img.Bounds().Dx(), img.Bounds().Dy())
69+
}
70+
}

0 commit comments

Comments
 (0)