|
@@ -5,11 +5,12 @@ import (
|
|
|
"encoding/base64"
|
|
"encoding/base64"
|
|
|
"errors"
|
|
"errors"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
- "golang.org/x/image/webp"
|
|
|
|
|
"image"
|
|
"image"
|
|
|
"io"
|
|
"io"
|
|
|
"one-api/common"
|
|
"one-api/common"
|
|
|
"strings"
|
|
"strings"
|
|
|
|
|
+
|
|
|
|
|
+ "golang.org/x/image/webp"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
func DecodeBase64ImageData(base64String string) (image.Config, string, string, error) {
|
|
func DecodeBase64ImageData(base64String string) (image.Config, string, string, error) {
|
|
@@ -31,6 +32,31 @@ func DecodeBase64ImageData(base64String string) (image.Config, string, string, e
|
|
|
return config, format, base64String, err
|
|
return config, format, base64String, err
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func DecodeBase64FileData(base64String string) (string, string, error) {
|
|
|
|
|
+ var mimeType string
|
|
|
|
|
+ var idx int
|
|
|
|
|
+ idx = strings.Index(base64String, ",")
|
|
|
|
|
+ if idx == -1 {
|
|
|
|
|
+ _, file_type, base64, err := DecodeBase64ImageData(base64String)
|
|
|
|
|
+ return "image/" + file_type, base64, err
|
|
|
|
|
+ }
|
|
|
|
|
+ mimeType = base64String[:idx]
|
|
|
|
|
+ base64String = base64String[idx+1:]
|
|
|
|
|
+ idx = strings.Index(mimeType, ";")
|
|
|
|
|
+ if idx == -1 {
|
|
|
|
|
+ _, file_type, base64, err := DecodeBase64ImageData(base64String)
|
|
|
|
|
+ return "image/" + file_type, base64, err
|
|
|
|
|
+ }
|
|
|
|
|
+ mimeType = mimeType[:idx]
|
|
|
|
|
+ idx = strings.Index(mimeType, ":")
|
|
|
|
|
+ if idx == -1 {
|
|
|
|
|
+ _, file_type, base64, err := DecodeBase64ImageData(base64String)
|
|
|
|
|
+ return "image/" + file_type, base64, err
|
|
|
|
|
+ }
|
|
|
|
|
+ mimeType = mimeType[idx+1:]
|
|
|
|
|
+ return mimeType, base64String, nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// GetImageFromUrl 获取图片的类型和base64编码的数据
|
|
// GetImageFromUrl 获取图片的类型和base64编码的数据
|
|
|
func GetImageFromUrl(url string) (mimeType string, data string, err error) {
|
|
func GetImageFromUrl(url string) (mimeType string, data string, err error) {
|
|
|
resp, err := DoDownloadRequest(url)
|
|
resp, err := DoDownloadRequest(url)
|