Commit d8c648e8 authored by brent's avatar brent

modifi webp

parent 638a52eb
...@@ -12,7 +12,7 @@ apikey = "Rbhpcp0FKNrYNA1nZkrwrIbD0YSSRlVG" ...@@ -12,7 +12,7 @@ apikey = "Rbhpcp0FKNrYNA1nZkrwrIbD0YSSRlVG"
taskUrl = "https://api.aonet.ai/api/v1" taskUrl = "https://api.aonet.ai/api/v1"
imageUrl = "https://tmp-file.aigic.ai/api/v1/upload/persistence" imageUrl = "https://tmp-file.aigic.ai/api/v1/upload/persistence"
imageTransferUrl = "https://tmp-file.aigic.ai/api/v1/down/put" imageTransferUrl = "https://tmp-file.aigic.ai/api/v1/down/put"
replicateToken = "r8_9OCCea50go2Qkh0f0jhu3DbNjyzuyt61VNVI6" replicateToken = "r8_U2xkKXvCaMSSGPFFxOFZVHyxuBjzQSO498J65"
replicateTimeout = 10 replicateTimeout = 10
bucketName = "aon-watermark" bucketName = "aon-watermark"
region = "us-west-2" region = "us-west-2"
......
...@@ -21,6 +21,7 @@ import ( ...@@ -21,6 +21,7 @@ import (
storage_go "github.com/supabase-community/storage-go" storage_go "github.com/supabase-community/storage-go"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/bson/primitive"
"golang.org/x/image/webp"
"gopkg.in/yaml.v2" "gopkg.in/yaml.v2"
"image" "image"
"image/jpeg" "image/jpeg"
...@@ -357,6 +358,16 @@ func transferFileToS3(images []string, task *models.Task, needWatermark bool) [] ...@@ -357,6 +358,16 @@ func transferFileToS3(images []string, task *models.Task, needWatermark bool) []
return images return images
} }
func decodeWebP(file *os.File) (image.Image, error) {
img, err := webp.Decode(file)
if err != nil {
return nil, err
}
return img, nil
}
func downloadImage(url string) (image.Image, string, error) { func downloadImage(url string) (image.Image, string, error) {
resp, err := http.Get(url) resp, err := http.Get(url)
if err != nil { if err != nil {
...@@ -364,11 +375,30 @@ func downloadImage(url string) (image.Image, string, error) { ...@@ -364,11 +375,30 @@ func downloadImage(url string) (image.Image, string, error) {
} }
defer resp.Body.Close() defer resp.Body.Close()
img, format, err := image.Decode(resp.Body) body, err := io.ReadAll(resp.Body)
kind, err := filetype.Match(body)
if err != nil { if err != nil {
logs.Debug("filetype.Match error = ", err)
return nil, "", err return nil, "", err
} }
img, format, err := image.Decode(resp.Body)
if err != nil {
mime := kind.MIME.Value
if mime == "image/webp" {
format = "webp"
file, err := downloadFile(url)
img, err = decodeWebP(file)
defer file.Close()
defer os.Remove(file.Name())
//img, err = webp.Decode(resp.Body)
if err != nil {
return nil, "", err
}
} else {
return nil, "", err
}
}
return img, format, nil return img, format, nil
} }
...@@ -606,16 +636,21 @@ func addWatermark(sourceURL string, watermarkURL string) (string, error) { ...@@ -606,16 +636,21 @@ func addWatermark(sourceURL string, watermarkURL string) (string, error) {
// 创建绘图上下文 // 创建绘图上下文
dc := gg.NewContextForImage(srcImg) dc := gg.NewContextForImage(srcImg)
width := watermarkImg.Bounds().Dx()
height := watermarkImg.Bounds().Dy()
// 添加水印 // 添加水印
if watermarkImg != nil { if watermarkImg != nil {
dc.DrawImageAnchored(watermarkImg, dc.Width()/2, dc.Height()-80, 0.5, 0.5) // 在中心添加水印 dc.DrawImageAnchored(watermarkImg, (dc.Width()-width)/2, dc.Height()-height-80, 0, 0) // 在中心添加水印
} }
// 获取合成后的图像 // 获取合成后的图像
outputImg := dc.Image() outputImg := dc.Image()
// 上传到 S3 // 上传到 S3
s3Url, err := uploadToS3(bucketName, outputKey, outputImg, ext) timestamp := time.Now().Unix()
timestampStr := strconv.FormatInt(timestamp, 10)
outputKey = timestampStr + ".png"
s3Url, err := uploadToS3(bucketName, outputKey, outputImg, ".png")
if err != nil { if err != nil {
logs.Debug("uploadToS3 faild", err) logs.Debug("uploadToS3 faild", err)
file, data, err := ImageToFile(outputKey, outputImg, ext) file, data, err := ImageToFile(outputKey, outputImg, ext)
......
{"/Users/brent/Documents/wubanWork/aon_app_server/controllers":1723948236667217848} {"/Users/brent/Documents/wubanWork/aon_app_server/controllers":1724388875286732771}
\ No newline at end of file \ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment