Files
ragflow/internal/deepdoc/parser/pdf/util/image_utils.go
Jack 98323e7910 Refactor: oss parser go refactor (#16391)
### What problem does this PR solve?

Package refactor and PDF post process.

### Type of change

- [x] Refactoring

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-29 18:46:41 +08:00

46 lines
1.0 KiB
Go

package util
import (
"bytes"
"encoding/base64"
"image"
"image/jpeg"
"image/png"
)
// EncodePNG encodes img as PNG bytes.
func EncodePNG(img image.Image) ([]byte, error) {
var buf bytes.Buffer
if err := png.Encode(&buf, img); err != nil {
return nil, err
}
return buf.Bytes(), nil
}
// EncodeImageToBase64PNG encodes img as a base64-encoded PNG string.
func EncodeImageToBase64PNG(img image.Image) (string, error) {
data, err := EncodePNG(img)
if err != nil {
return "", err
}
return base64.StdEncoding.EncodeToString(data), nil
}
// DecodeBase64PNG decodes a base64-encoded PNG string to an image.Image.
func DecodeBase64PNG(b64 string) (image.Image, error) {
data, err := base64.StdEncoding.DecodeString(b64)
if err != nil {
return nil, err
}
return png.Decode(bytes.NewReader(data))
}
// EncodeJPEG encodes img as JPEG bytes with quality 90.
func EncodeJPEG(img image.Image) ([]byte, error) {
var buf bytes.Buffer
if err := jpeg.Encode(&buf, img, &jpeg.Options{Quality: 90}); err != nil {
return nil, err
}
return buf.Bytes(), nil
}