-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrm_graphicsmagick2.go
55 lines (44 loc) · 1.1 KB
/
rm_graphicsmagick2.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package main
// #include "redismodule.h"
import "C"
import (
"bytes"
"github.com/rainycape/magick"
"unsafe"
)
//export GoGetImgType
func GoGetImgType(buf *C.char, length C.int) (*string, *string) {
var imgType, retErr string
data := C.GoBytes(unsafe.Pointer(buf), length)
img, err := magick.DecodeData(data)
if err != nil {
imgType, retErr = "", err.Error()
} else {
imgType, retErr = img.Format(), ""
}
return &imgType, &retErr
}
//export GoImgThumbnail
func GoImgThumbnail(buf *C.char, length C.int, width, height C.longlong) (*string, *string) {
var retImg, retErr string
data := C.GoBytes(unsafe.Pointer(buf), length)
img, err := magick.DecodeData(data)
if err != nil {
retImg, retErr = "", err.Error()
return &retImg, &retErr
}
thumbnail, err := img.Thumbnail(int(width), int(height))
if err != nil {
retImg, retErr = "", err.Error()
return &retImg, &retErr
}
var wbuf bytes.Buffer
err = thumbnail.Encode(&wbuf, nil)
if err != nil {
retImg, retErr = "", err.Error()
return &retImg, &retErr
}
retImg, retErr = wbuf.String(), ""
return &retImg, &retErr
}
func main() {}