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