diff --git a/portal.go b/portal.go index 6a774d6..532d293 100644 --- a/portal.go +++ b/portal.go @@ -1553,7 +1553,6 @@ type MediaMessage interface { type MediaMessageWithThumbnail interface { MediaMessage GetJpegThumbnail() []byte - GetCaption() string } type MediaMessageWithCaption interface { @@ -1561,6 +1560,12 @@ type MediaMessageWithCaption interface { GetCaption() string } +type MediaMessageWithDimensions interface { + MediaMessage + GetHeight() uint32 + GetWidth() uint32 +} + type MediaMessageWithFileName interface { MediaMessage GetFileName() string @@ -1602,7 +1607,12 @@ func (portal *Portal) convertMediaMessage(intent *appservice.IntentAPI, source * } var width, height int - if strings.HasPrefix(msg.GetMimetype(), "image/") { + messageWithDimensions, ok := msg.(MediaMessageWithDimensions) + if ok { + width = int(messageWithDimensions.GetWidth()) + height = int(messageWithDimensions.GetHeight()) + } + if width == 0 && height == 0 && strings.HasPrefix(msg.GetMimetype(), "image/") { cfg, _, _ := image.DecodeConfig(bytes.NewReader(data)) width, height = cfg.Width, cfg.Height }