mirror of
https://github.com/kevin-DL/services.git
synced 2026-01-11 19:04:35 +00:00
image: Fix convert endpoint (#274)
This commit is contained in:
@@ -224,6 +224,8 @@ func (e *Image) Convert(ctx context.Context, req *img.ConvertRequest, rsp *img.C
|
|||||||
var srcImage image.Image
|
var srcImage image.Image
|
||||||
var imageBytes []byte
|
var imageBytes []byte
|
||||||
var err error
|
var err error
|
||||||
|
var ext string
|
||||||
|
|
||||||
if len(req.File) > 0 {
|
if len(req.File) > 0 {
|
||||||
imageBytes = req.File
|
imageBytes = req.File
|
||||||
} else if len(req.Base64) > 0 {
|
} else if len(req.Base64) > 0 {
|
||||||
@@ -232,11 +234,10 @@ func (e *Image) Convert(ctx context.Context, req *img.ConvertRequest, rsp *img.C
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else if len(req.Url) > 0 {
|
} else if len(req.Url) > 0 {
|
||||||
_, err := url.Parse(req.Url)
|
ur, err := url.Parse(req.Url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
response, err := http.Get(req.Url)
|
response, err := http.Get(req.Url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -246,6 +247,12 @@ func (e *Image) Convert(ctx context.Context, req *img.ConvertRequest, rsp *img.C
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
switch {
|
||||||
|
case strings.HasSuffix(ur.Path, ".png"):
|
||||||
|
ext = "png"
|
||||||
|
case strings.HasSuffix(ur.Path, ".jpg") || strings.HasSuffix(ur.Path, ".jpeg"):
|
||||||
|
ext = "jpg"
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return merrors.BadRequest("image.Convert", "Must pass either base64, url, or file param")
|
return merrors.BadRequest("image.Convert", "Must pass either base64, url, or file param")
|
||||||
}
|
}
|
||||||
@@ -261,6 +268,10 @@ func (e *Image) Convert(ctx context.Context, req *img.ConvertRequest, rsp *img.C
|
|||||||
err = png.Encode(buf, srcImage)
|
err = png.Encode(buf, srcImage)
|
||||||
case strings.HasSuffix(req.Name, ".jpg") || strings.HasSuffix(req.Url, ".jpeg"):
|
case strings.HasSuffix(req.Name, ".jpg") || strings.HasSuffix(req.Url, ".jpeg"):
|
||||||
err = jpeg.Encode(buf, srcImage, nil)
|
err = jpeg.Encode(buf, srcImage, nil)
|
||||||
|
case strings.HasSuffix(req.Url, ".png"):
|
||||||
|
err = png.Encode(buf, srcImage)
|
||||||
|
case strings.HasSuffix(req.Url, ".jpg") || strings.HasSuffix(req.Url, ".jpeg"):
|
||||||
|
err = jpeg.Encode(buf, srcImage, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -273,12 +284,11 @@ func (e *Image) Convert(ctx context.Context, req *img.ConvertRequest, rsp *img.C
|
|||||||
}
|
}
|
||||||
rsp.Url = fmt.Sprintf("%v/%v/%v/%v/%v", e.hostPrefix, "micro", "images", tenantID, req.Name)
|
rsp.Url = fmt.Sprintf("%v/%v/%v/%v/%v", e.hostPrefix, "micro", "images", tenantID, req.Name)
|
||||||
} else {
|
} else {
|
||||||
src := buf.Bytes()
|
prefix := "data:image/png;base64, "
|
||||||
length := base64.StdEncoding.EncodedLen(len(src))
|
if ext == "jpg" {
|
||||||
dst := make([]byte, length)
|
prefix = "data:image/jpg;base64, "
|
||||||
base64.StdEncoding.Encode(dst, src)
|
}
|
||||||
|
rsp.Base64 = prefix + base64.StdEncoding.EncodeToString(buf.Bytes())
|
||||||
rsp.Base64 = string(dst)
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
Reference in New Issue
Block a user