1
0
Fork 0
mirror of https://github.com/Luzifer/streamdeck.git synced 2024-12-21 02:01:24 +00:00

Make moving between SDs easier by adjusting images

Signed-off-by: Knut Ahlers <knut@ahlers.me>
This commit is contained in:
Knut Ahlers 2020-06-06 15:57:42 +02:00
parent 47e2c001b8
commit 42c0ec2f11
Signed by: luzifer
GPG key ID: DC2729FDD34BE99E
5 changed files with 45 additions and 0 deletions

View file

@ -81,6 +81,8 @@ func (d displayElementExec) Display(idx int, attributes map[string]interface{})
return errors.Wrap(err, "Unable to get image from disk") return errors.Wrap(err, "Unable to get image from disk")
} }
bgi = autoSizeImage(bgi, sd.IconSize())
draw.Draw(img, img.Bounds(), bgi, image.ZP, draw.Src) draw.Draw(img, img.Bounds(), bgi, image.ZP, draw.Src)
} }

View file

@ -32,5 +32,7 @@ func (d displayElementImage) Display(idx int, attributes map[string]interface{})
return errors.Wrap(err, "Umable to decode image") return errors.Wrap(err, "Umable to decode image")
} }
img = autoSizeImage(img, sd.IconSize())
return errors.Wrap(sd.FillImage(idx, img), "Unable to set image") return errors.Wrap(sd.FillImage(idx, img), "Unable to set image")
} }

View file

@ -11,6 +11,7 @@ require (
github.com/fsnotify/fsnotify v1.4.7 github.com/fsnotify/fsnotify v1.4.7
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0
github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
github.com/pkg/errors v0.8.1 github.com/pkg/errors v0.8.1
github.com/sashko/go-uinput v0.0.0-20180923134002-15fcac7aa54a github.com/sashko/go-uinput v0.0.0-20180923134002-15fcac7aa54a
github.com/sirupsen/logrus v1.4.2 github.com/sirupsen/logrus v1.4.2

View file

@ -16,6 +16,8 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxv
github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s=
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/leekchan/gtf v0.0.0-20190214083521-5fba33c5b00b/go.mod h1:thNruaSwydMhkQ8dXzapABF9Sc1Tz08ZBcDdgott9RA= github.com/leekchan/gtf v0.0.0-20190214083521-5fba33c5b00b/go.mod h1:thNruaSwydMhkQ8dXzapABF9Sc1Tz08ZBcDdgott9RA=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=

38
cmd/streamdeck/helpers.go Normal file
View file

@ -0,0 +1,38 @@
package main
import (
"image"
"image/color"
"github.com/nfnt/resize"
"golang.org/x/image/draw"
)
func autoSizeImage(img image.Image, size int) image.Image {
if img.Bounds().Max.X == size && img.Bounds().Max.Y == size {
// Image has perfect size: Nothing to change
return img
}
// Scale down when required
img = resize.Thumbnail(uint(size), uint(size), img, resize.Lanczos2)
if img.Bounds().Max.X == size && img.Bounds().Max.Y == size {
// Image has perfect size now: Nothing to change
return img
}
// Image is too small, need to pad it
var (
dimg = image.NewNRGBA(image.Rect(0, 0, size, size))
pt = image.Point{
X: (size - img.Bounds().Max.X) / 2,
Y: (size - img.Bounds().Max.Y) / 2,
}
)
// Draw black background
draw.Copy(dimg, image.Point{}, image.NewUniform(color.RGBA{0x0, 0x0, 0x0, 0xff}), dimg.Bounds(), draw.Src, nil)
// Copy in image
draw.Copy(dimg, pt, img, img.Bounds(), draw.Src, nil)
return dimg
}