59 lines
1.5 KiB
Go
59 lines
1.5 KiB
Go
package image
|
||
|
||
import (
|
||
"encoding/base64"
|
||
"encoding/json"
|
||
"fmt"
|
||
|
||
planBTypeModules "planA/planB/type/modules"
|
||
)
|
||
|
||
// AddWatermarkFromURLExs 添加水印
|
||
func AddWatermarkFromURLExs(sourceImageUrl, watermarkUrl string) (string, error) {
|
||
watermarkConfig := WatermarkConfig{
|
||
SourceImageURL: sourceImageUrl,
|
||
WatermarkBase64: watermarkUrl,
|
||
Position: "center",
|
||
Opacity: 1.0,
|
||
Scale: 1.0,
|
||
TileSpacing: 50,
|
||
Timeout: 30,
|
||
OutputFormat: "jpeg",
|
||
JPEGQuality: 95,
|
||
TargetWidth: 800,
|
||
TargetHeight: 800,
|
||
ResizeMode: "fit",
|
||
}
|
||
|
||
imgBytes, imgFormat, err := AddWatermarkFromURL(watermarkConfig)
|
||
if err != nil {
|
||
return "", fmt.Errorf("打水印失败: %v", err)
|
||
}
|
||
|
||
// 构建带MIME前缀的Base64数据(匹配原DLL返回格式)
|
||
var base64Data string
|
||
switch imgFormat {
|
||
case "jpeg", "jpg":
|
||
base64Data = "data:image/jpeg;base64," + base64.StdEncoding.EncodeToString(imgBytes)
|
||
case "png":
|
||
base64Data = "data:image/png;base64," + base64.StdEncoding.EncodeToString(imgBytes)
|
||
case "gif":
|
||
base64Data = "data:image/gif;base64," + base64.StdEncoding.EncodeToString(imgBytes)
|
||
default:
|
||
base64Data = "data:image/jpeg;base64," + base64.StdEncoding.EncodeToString(imgBytes)
|
||
}
|
||
|
||
result := planBTypeModules.ImageResult{
|
||
Success: true,
|
||
Format: imgFormat,
|
||
Data: base64Data,
|
||
}
|
||
|
||
resultJson, err := json.Marshal(result)
|
||
if err != nil {
|
||
return "", fmt.Errorf("JSON序列化失败: %v", err)
|
||
}
|
||
|
||
return string(resultJson), nil
|
||
}
|