image: Fix convert endpoint (#274)

This commit is contained in:
Janos Dobronszki
2021-11-17 10:27:21 +00:00
committed by GitHub
parent dcdbccd54f
commit 64525fd630

View File

@@ -224,6 +224,8 @@ func (e *Image) Convert(ctx context.Context, req *img.ConvertRequest, rsp *img.C
var srcImage image.Image
var imageBytes []byte
var err error
var ext string
if len(req.File) > 0 {
imageBytes = req.File
} 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
}
} else if len(req.Url) > 0 {
_, err := url.Parse(req.Url)
ur, err := url.Parse(req.Url)
if err != nil {
return err
}
response, err := http.Get(req.Url)
if err != nil {
return err
@@ -246,6 +247,12 @@ func (e *Image) Convert(ctx context.Context, req *img.ConvertRequest, rsp *img.C
if err != nil {
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 {
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)
case strings.HasSuffix(req.Name, ".jpg") || strings.HasSuffix(req.Url, ".jpeg"):
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 {
@@ -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)
} else {
src := buf.Bytes()
length := base64.StdEncoding.EncodedLen(len(src))
dst := make([]byte, length)
base64.StdEncoding.Encode(dst, src)
rsp.Base64 = string(dst)
prefix := "data:image/png;base64, "
if ext == "jpg" {
prefix = "data:image/jpg;base64, "
}
rsp.Base64 = prefix + base64.StdEncoding.EncodeToString(buf.Bytes())
return nil
}
return nil