daShangDao_planA/planB/modules/image/image.go

59 lines
1.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}