diff options
author | Wim <wim@42.be> | 2019-02-27 00:41:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-27 00:41:50 +0100 |
commit | 26a7e35f2777b8424477eef1838125a6ae55fe48 (patch) | |
tree | d48cfdb02bb7a6d0558413cbad906f2ec59cb3a2 /bridge/helper | |
parent | d44d2a5f0014fda12ce78d35e416dffab6b7c04a (diff) | |
download | matterbridge-msglm-26a7e35f2777b8424477eef1838125a6ae55fe48.tar.gz matterbridge-msglm-26a7e35f2777b8424477eef1838125a6ae55fe48.tar.bz2 matterbridge-msglm-26a7e35f2777b8424477eef1838125a6ae55fe48.zip |
Add MediaConvertWebPToPNG option (telegram). (#741)
* Add MediaConvertWebPToPNG option (telegram).
When enabled matterbridge will convert .webp files to .png files
before uploading them to the mediaserver of the other bridges.
Fixes #398
Diffstat (limited to 'bridge/helper')
-rw-r--r-- | bridge/helper/helper.go | 19 | ||||
-rw-r--r-- | bridge/helper/helper_test.go | 21 |
2 files changed, 40 insertions, 0 deletions
diff --git a/bridge/helper/helper.go b/bridge/helper/helper.go index 3836556f..c336fd13 100644 --- a/bridge/helper/helper.go +++ b/bridge/helper/helper.go @@ -3,6 +3,7 @@ package helper import ( "bytes" "fmt" + "image/png" "io" "net/http" "regexp" @@ -10,6 +11,8 @@ import ( "time" "unicode/utf8" + "golang.org/x/image/webp" + "github.com/42wim/matterbridge/bridge/config" "github.com/sirupsen/logrus" "gitlab.com/golang-commonmark/markdown" @@ -177,3 +180,19 @@ func ParseMarkdown(input string) string { md := markdown.New(markdown.XHTMLOutput(true), markdown.Breaks(true)) return (md.RenderToString([]byte(input))) } + +// ConvertWebPToPNG convert input data (which should be WebP format to PNG format) +func ConvertWebPToPNG(data *[]byte) error { + r := bytes.NewReader(*data) + m, err := webp.Decode(r) + if err != nil { + return err + } + var output []byte + w := bytes.NewBuffer(output) + if err := png.Encode(w, m); err != nil { + return err + } + *data = w.Bytes() + return nil +} diff --git a/bridge/helper/helper_test.go b/bridge/helper/helper_test.go index 1770acd9..48f33b10 100644 --- a/bridge/helper/helper_test.go +++ b/bridge/helper/helper_test.go @@ -1,6 +1,8 @@ package helper import ( + "io/ioutil" + "os" "testing" "github.com/stretchr/testify/assert" @@ -103,3 +105,22 @@ func TestGetSubLines(t *testing.T) { assert.Equalf(t, testcase.nonSplitOutput, nonSplitLines, "'%s' testcase should give expected lines without splitting.", testname) } } + +func TestConvertWebPToPNG(t *testing.T) { + if os.Getenv("LOCAL_TEST") == "" { + t.Skip() + } + input, err := ioutil.ReadFile("test.webp") + if err != nil { + t.Fail() + } + d := &input + err = ConvertWebPToPNG(d) + if err != nil { + t.Fail() + } + err = ioutil.WriteFile("test.png", *d, 0644) + if err != nil { + t.Fail() + } +} |