48 lines
1005 B
Go
48 lines
1005 B
Go
// Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
|
|
|
|
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"github.com/TeaOSLab/EdgeNode/internal/utils/heif/libheif"
|
|
"image"
|
|
"log"
|
|
"os"
|
|
"reflect"
|
|
|
|
_ "image/jpeg"
|
|
_ "image/png"
|
|
)
|
|
|
|
func main() {
|
|
cwd, err := os.Getwd()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
return
|
|
}
|
|
var dir = cwd + "/internal/utils/heif/libheif/main"
|
|
data, err := os.ReadFile(dir + "/test.jpg")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
log.Println(image.DecodeConfig(bytes.NewReader(data)))
|
|
|
|
img, _, err := image.Decode(bytes.NewBuffer(data))
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
log.Print(reflect.TypeOf(img).String())
|
|
|
|
ctx, err := _libheif.EncodeFromImage(img, _libheif.CompressionUndefined, 30, _libheif.LosslessModeDisabled, _libheif.LoggingLevelBasic)
|
|
if err != nil {
|
|
log.Fatal(fmt.Errorf("encode failed: %w", err))
|
|
}
|
|
err = ctx.WriteToFile(dir + "/test.avif")
|
|
if err != nil {
|
|
log.Fatal(fmt.Errorf("write failed: %w", err))
|
|
}
|
|
}
|