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 }