Merge remote-tracking branch 'jrswab/imageResize'

This commit is contained in:
Tulir Asokan 2019-06-16 15:21:01 +03:00
commit 242d3a00d9

View File

@ -19,6 +19,7 @@ package messages
import ( import (
"bytes" "bytes"
"fmt" "fmt"
"image"
"image/color" "image/color"
"maunium.net/go/mautrix" "maunium.net/go/mautrix"
@ -103,7 +104,8 @@ func (msg *ImageMessage) Path() string {
// CalculateBuffer generates the internal buffer for this message that consists // CalculateBuffer generates the internal buffer for this message that consists
// of the text of this message split into lines at most as wide as the width // of the text of this message split into lines at most as wide as the width
// parameter. // parameter. If the message width is larger than the width of the buffer
// the message is scaled to one third the buffer width.
func (msg *ImageMessage) CalculateBuffer(prefs config.UserPreferences, width int, uiMsg *UIMessage) { func (msg *ImageMessage) CalculateBuffer(prefs config.UserPreferences, width int, uiMsg *UIMessage) {
if width < 2 { if width < 2 {
return return
@ -114,14 +116,23 @@ func (msg *ImageMessage) CalculateBuffer(prefs config.UserPreferences, width int
return return
} }
image, err := ansimage.NewScaledFromReader(bytes.NewReader(msg.data), 0, width, color.Black) img, _, err := image.DecodeConfig(bytes.NewReader(msg.data))
if err != nil {
debug.Print("Image could not be decoded:", err)
}
imgWidth := img.Width
if img.Width > width {
imgWidth = width / 3
}
ansImage, err := ansimage.NewScaledFromReader(bytes.NewReader(msg.data), 0, imgWidth, color.Black)
if err != nil { if err != nil {
msg.buffer = []tstring.TString{tstring.NewColorTString("Failed to display image", tcell.ColorRed)} msg.buffer = []tstring.TString{tstring.NewColorTString("Failed to display image", tcell.ColorRed)}
debug.Print("Failed to display image:", err) debug.Print("Failed to display image:", err)
return return
} }
msg.buffer = image.Render() msg.buffer = ansImage.Render()
} }
func (msg *ImageMessage) Height() int { func (msg *ImageMessage) Height() int {