diff --git a/go.mod b/go.mod index 671d018c1..469886f85 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,7 @@ require ( github.com/kovidgoyal/dbus v0.0.0-20250519011319-e811c41c0bc1 github.com/kovidgoyal/go-parallel v1.1.1 github.com/kovidgoyal/go-shm v1.0.0 - github.com/kovidgoyal/imaging v1.8.11 + github.com/kovidgoyal/imaging v1.8.12 github.com/seancfoley/ipaddress-go v1.7.1 github.com/shirou/gopsutil/v4 v4.25.10 github.com/zeebo/xxh3 v1.0.2 diff --git a/go.sum b/go.sum index 0bfb252f4..285bc5dd0 100644 --- a/go.sum +++ b/go.sum @@ -34,8 +34,8 @@ github.com/kovidgoyal/go-parallel v1.1.1 h1:1OzpNjtrUkBPq3UaqrnvOoB2F9RttSt811ui github.com/kovidgoyal/go-parallel v1.1.1/go.mod h1:BJNIbe6+hxyFWv7n6oEDPj3PA5qSw5OCtf0hcVxWJiw= github.com/kovidgoyal/go-shm v1.0.0 h1:HJEel9D1F9YhULvClEHJLawoRSj/1u/EDV7MJbBPgQo= github.com/kovidgoyal/go-shm v1.0.0/go.mod h1:Yzb80Xf9L3kaoB2RGok9hHwMIt7Oif61kT6t3+VnZds= -github.com/kovidgoyal/imaging v1.8.11 h1:i2NzTs8Ge0LKvilKiTw0U1kTcrBL8bo+zUYZSjSP+6M= -github.com/kovidgoyal/imaging v1.8.11/go.mod h1:rjyfCTmIGGDjbMWGJ8QN/D/AWjHXD5flIzhjJpOcOVw= +github.com/kovidgoyal/imaging v1.8.12 h1:S1NIlxNdI86A3MGJNajqp2Pu8/WSVrL8L1B5HbSQsB0= +github.com/kovidgoyal/imaging v1.8.12/go.mod h1:rjyfCTmIGGDjbMWGJ8QN/D/AWjHXD5flIzhjJpOcOVw= github.com/lufia/plan9stats v0.0.0-20230326075908-cb1d2100619a h1:N9zuLhTvBSRt0gWSiJswwQ2HqDmtX/ZCDJURnKUt1Ik= github.com/lufia/plan9stats v0.0.0-20230326075908-cb1d2100619a/go.mod h1:JKx41uQRwqlTZabZc+kILPrO/3jlKnQ2Z8b7YiVw5cE= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= diff --git a/kittens/icat/process_images.go b/kittens/icat/process_images.go index f89883e49..3a3f0dc5b 100644 --- a/kittens/icat/process_images.go +++ b/kittens/icat/process_images.go @@ -216,7 +216,13 @@ func scale_image(imgd *image_data) bool { func add_frame(imgd *image_data, img image.Image, left, top int) *image_frame { const shm_template = "kitty-icat-*" - num_channels, pix := imaging.AsRGBData8(img) + num_channels := 4 + var pix []byte + if imaging.IsOpaque(img) { + num_channels, pix = 3, imaging.AsRGBData8(img) + } else { + pix = imaging.AsRGBAData8(img) + } b := img.Bounds() f := image_frame{width: b.Dx(), height: b.Dy(), number: len(imgd.frames) + 1, left: left, top: top} f.transmission_format = utils.IfElse(num_channels == 3, graphics.GRT_format_rgb, graphics.GRT_format_rgba) diff --git a/tools/utils/images/loading.go b/tools/utils/images/loading.go index e12374b17..d00c7b50a 100644 --- a/tools/utils/images/loading.go +++ b/tools/utils/images/loading.go @@ -77,10 +77,10 @@ func (self *ImageFrame) DataAsSHM(pattern string) (ans shm.MMap, err error) { } func (self *ImageFrame) Data() (num_channels, bits_per_channel int, has_alpha_channel bool, ans []byte) { - num_channels, ans = imaging.AsRGBData8(self.Img) - bits_per_channel = 8 - has_alpha_channel = num_channels == 3 - return + if self.Is_opaque { + return 3, 8, false, imaging.AsRGBData8(self.Img) + } + return 4, 8, true, imaging.AsRGBAData8(self.Img) } func ImageFrameFromSerialized(s SerializableImageFrame, data []byte) (aa *ImageFrame, err error) {