mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-02 08:45:42 +08:00
### What problem does this PR solve? Package refactor and PDF post process. ### Type of change - [x] Refactoring --------- Co-authored-by: Claude <noreply@anthropic.com>
46 lines
1.0 KiB
Go
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
|
|
}
|