git.sophuwu.com > sketch
added support for ico, gif (first frame), and webp (not supported on arm)
sophuwu sophie@sophuwu.com
Sat, 13 Dec 2025 19:08:04 +0100
commit

9430ebc552b63a6ef848c893d888b5e2bda7d9df

parent

8fcc1e4599beabe78a17a04c594af4fea20ed633

5 files changed, 35 insertions(+), 7 deletions(-)

jump to
M .gitignore.gitignore

@@ -1,5 +1,4 @@

.idea -sketch build -hotdog.png -pfp.png +test +
M go.modgo.mod

@@ -1,10 +1,13 @@

module git.sophuwu.com/sketch -go 1.21.3 +go 1.24.0 require ( + github.com/kolesa-team/go-webp v1.0.5 + github.com/mat/besticon v3.12.0+incompatible github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 + golang.org/x/sys v0.14.0 golang.org/x/term v0.14.0 ) -require golang.org/x/sys v0.14.0 // indirect +require golang.org/x/image v0.34.0 // indirect
M go.sumgo.sum

@@ -1,6 +1,22 @@

+github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/kolesa-team/go-webp v1.0.5 h1:GZQHJBaE8dsNKZltfwqsL0qVJ7vqHXsfA+4AHrQW3pE= +github.com/kolesa-team/go-webp v1.0.5/go.mod h1:QmJu0YHXT3ex+4SgUvs+a+1SFCDcCqyZg+LbIuNNTnE= +github.com/mat/besticon v3.12.0+incompatible h1:1KTD6wisfjfnX+fk9Kx/6VEZL+MAW1LhCkL9Q47H9Bg= +github.com/mat/besticon v3.12.0+incompatible/go.mod h1:mA1auQYHt6CW5e7L9HJLmqVQC8SzNk2gVwouO0AbiEU= 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +golang.org/x/image v0.34.0 h1:33gCkyw9hmwbZJeZkct8XyR11yH889EQt/QH4VmXMn8= +golang.org/x/image v0.34.0/go.mod h1:2RNFBZRB+vnwwFil8GkMdRvrJOFd1AzdZI6vOY+eJVU= golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
M src/main.gosrc/main.go

@@ -2,9 +2,12 @@ package main

import ( "fmt" + _ "github.com/mat/besticon/ico" "image" + _ "image/gif" _ "image/jpeg" _ "image/png" + "math" "os" "os/signal"

@@ -100,7 +103,7 @@ r, g, b, _ := img.Img.At(img.Img.Bounds().Min.X+img.X/2, img.Y+img.X%2).RGBA()

fmt.Printf("\033[%d8;2;%d;%d;%dm", 3+(img.X%2), r>>8, g>>8, b>>8) } -var scaleFlag = regexp.MustCompile(`-[0-9]+`) +var scaleFlag = regexp.MustCompile(`^-[0-9]+$`) func init() { for _, arg := range os.Args[1:] {

@@ -253,9 +256,13 @@ if err != nil {

return fmt.Errorf("fatal: could not read current directory") } paths := []string{} - rx := regexp.MustCompile(`(?i)\.(png|jpe?g)$`).MatchString + rx := regexp.MustCompile(`(?i)\.(png|jpe?g|gif|webp|ico)$`).MatchString for _, entry := range de { if entry.IsDir() { + continue + } + err = g.Img.OpenImg(entry.Name()) + if err != nil { continue } if entry.Type().IsRegular() && rx(entry.Name()) {
A src/main_amd64.go

@@ -0,0 +1,3 @@

+package main + +import _ "github.com/kolesa-team/go-webp/webp"