Skip to content

Commit

Permalink
feat(examples): add img2term example
Browse files Browse the repository at this point in the history
Only writes Sixel images for now
  • Loading branch information
aymanbagabas committed Feb 21, 2025
1 parent e46a2b7 commit fdb1448
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions examples/img2term/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package main

import (
"bytes"
"flag"
"image"
"io"
"log"
"os"

_ "image/jpeg"
_ "image/png"

"github.com/charmbracelet/x/ansi"
"github.com/charmbracelet/x/ansi/sixel"
)

func main() {
flag.Parse()
args := flag.Args()
if len(args) == 0 {
flag.Usage()
os.Exit(1)
}

f, err := os.Open(args[0])
if err != nil {
log.Fatal(err)
}

defer f.Close() //nolint:errcheck
img, _, err := image.Decode(f)
if err != nil {
log.Fatal(err)
}

if _, err := writeSixel(os.Stdout, img); err != nil {
log.Fatal(err)
}
}

func writeSixel(w io.Writer, img image.Image) (int, error) {
var buf bytes.Buffer
var e sixel.Encoder
if err := e.Encode(&buf, img); err != nil {
return 0, err
}

return io.WriteString(w, ansi.SixelGraphics(0, 1, 0, buf.Bytes()))
}

0 comments on commit fdb1448

Please sign in to comment.