aboutsummaryrefslogtreecommitdiff
path: root/themagicpipe/imageconverter.go
blob: 5e5738e0e39ca425edbedd9bd171b6aa8dc552e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package themagicpipe
import (
	"os/exec"
	"strings"
	"errors"
)

// Where the magic happens, the base64 data url image is sent through Imagemagick
// and converted to indexed colors 400x200 png
func DataURLConverter(dataURL string) (string, error) {
	if !strings.HasPrefix(dataURL, "data:image/png;base64,") {
		return "", errors.New("invalid dataURL")
	}
	cmd := "base64 -d | convert - -background white -flatten -resize 400x200! -colors 4 PNG8:- | base64 -w0"
   converter := exec.Command("sh","-c",cmd)
	converter.Stdin = strings.NewReader(strings.TrimPrefix(dataURL, "data:image/png;base64,"))
	output, err := converter.Output()
	if err != nil {
		return "", err
	}
	return "data:image/png;base64,"+string(output), nil
}