1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
package sixel
import (
"bytes"
"fmt"
"image"
"image/png"
"io"
"os"
"testing"
"github.com/charmbracelet/x/ansi"
// gosixel "github.com/mattn/go-sixel"
)
// func BenchmarkEncodingGoSixel(b *testing.B) {
// for i := 0; i < b.N; i++ {
// raw, err := loadImage("./../fixtures/graphics/JigokudaniMonkeyPark.png")
// if err != nil {
// os.Exit(1)
// }
// b := bytes.NewBuffer(nil)
// enc := gosixel.NewEncoder(b)
// if err := enc.Encode(raw); err != nil {
// fmt.Fprintln(os.Stderr, err)
// os.Exit(1)
// }
// // fmt.Println(b)
// }
// }
func writeSixelGraphics(w io.Writer, m image.Image) error {
e := &Encoder{}
data := bytes.NewBuffer(nil)
if err := e.Encode(data, m); err != nil {
return fmt.Errorf("failed to encode sixel image: %w", err)
}
_, err := io.WriteString(w, ansi.SixelGraphics(0, 1, 0, data.Bytes()))
return err //nolint:wrapcheck
}
func BenchmarkEncodingXSixel(b *testing.B) {
for i := 0; i < b.N; i++ {
raw, err := loadImage("./../fixtures/graphics/JigokudaniMonkeyPark.png")
if err != nil {
os.Exit(1)
}
b := bytes.NewBuffer(nil)
if err := writeSixelGraphics(b, raw); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
// fmt.Println(b)
}
}
func loadImage(path string) (image.Image, error) {
f, err := os.Open(path)
if err != nil {
return nil, err //nolint:wrapcheck
}
return png.Decode(f) //nolint:wrapcheck
}
|