Merge remote-tracking branch 'jrswab/imageResize'
This commit is contained in:
commit
242d3a00d9
@ -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 {
|
||||||
|
Loading…
Reference in New Issue
Block a user