|
1 | 1 | package common |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "bytes" |
| 5 | + "encoding/base64" |
4 | 6 | "fmt" |
| 7 | + "image" |
| 8 | + "image/color" |
| 9 | + "image/jpeg" |
5 | 10 | "testing" |
6 | 11 | "wox/util" |
7 | 12 |
|
@@ -39,3 +44,27 @@ func TestWoxImage_Emoji(t *testing.T) { |
39 | 44 | imaging.Save(img, path) |
40 | 45 | t.Log(path) |
41 | 46 | } |
| 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