Skip to content

Commit

Permalink
crop and resize are working
Browse files Browse the repository at this point in the history
  • Loading branch information
aldor007 committed Sep 23, 2017
1 parent ecf5f67 commit d69d51e
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 22 deletions.
19 changes: 11 additions & 8 deletions src/imgserver/engine/image_engine.go
Original file line number Diff line number Diff line change
@@ -1,28 +1,31 @@
package engine

import (
"errors"

"imgserver/object"
"imgserver/response"
Logger "github.com/labstack/gommon/log"
//Logger "github.com/labstack/gommon/log"
"gopkg.in/h2non/bimg.v1"
)

type ImageEngine struct {
parent *response.Response
Input []byte
parent *response.Response
}

func NewImageEngine (res *response.Response) *ImageEngine {
return &ImageEngine{Input: res.Body, parent: res}
}

func (self *ImageEngine) Process(obj *object.FileObject) (*response.Response, error) {

for i, trans := range obj.Transforms {
Logger.Infof("Permoring i = %d trans = %s", i, trans.Name)
}

return response.NewError(400, errors.New("Not ready")), errors.New("Not ready")
image := bimg.NewImage(self.Input)
buf, err := image.Process(obj.Transforms.BimgOptions())
if err != nil {
return response.NewError(500, err), err
}
res := response.New(200, buf)
res.SetContentType("image/" + bimg.DetermineImageTypeName(buf))
return res, nil
}

19 changes: 9 additions & 10 deletions src/imgserver/object/file_object.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,25 @@ const (
var URI_LIIP_RE = regexp.MustCompile(`\/media\/cache\/.*`)
var URI_LOCAL_RE = regexp.MustCompile(`\/media\/.*`)

func liipToTransform(liip config.LiipFiltersYAML ) ([]transforms.Base, transforms.Param) {
func liipToTransform(liip config.LiipFiltersYAML ) (transforms.Transforms) {
filters := liip.Filters
var trans []transforms.Base
var trans transforms.Transforms

if len(filters.Thumbnail.Size) > 0 {
trans = append(trans, transforms.Base{Name: "resize", Params: map[string]interface{}{"size": filters.Thumbnail.Size, "mode": filters.Thumbnail.Mode}})
trans.ResizeT(filters.Thumbnail.Size, filters.Thumbnail.Mode == "outbound")
}

if len(filters.SmartCrop.Size) > 0 {
trans = append(trans, transforms.Base{Name: "crop", Params: map[string]interface{}{"size": filters.SmartCrop.Size, "mode": filters.SmartCrop.Mode}})
trans.CropT(filters.SmartCrop.Size, filters.SmartCrop.Mode == "outbound")
}

if len(filters.Crop.Size) > 0 {
trans = append(trans, transforms.Base{Name: "crop", Params: map[string]interface{}{"size": filters.Crop.Size, "mode": filters.Crop.Mode}})
trans.CropT(filters.Crop.Size, filters.Crop.Mode == "outbound")
}

param := transforms.Quailty{Value:liip.Quality}
trans.Quality = liip.Quality

return trans, param
return trans
}


Expand All @@ -46,8 +46,7 @@ type FileObject struct {
Key string `json:"key"`
UriType int `json:"uriType"`
Parent string `json:"parent"`
Transforms []transforms.Base `json:"transforms"`
Params transforms.Param `json:"params"`
Transforms transforms.Transforms `json:"transforms"`

}

Expand Down Expand Up @@ -92,7 +91,7 @@ func (self *FileObject) decodeLiipPath() error {
self.Key = strings.Replace(self.Uri, "//", "/", 3)
self.Parent = "/" + strings.Join(elements[4:], "/")
liipConfig := config.GetInstance().LiipConfig
self.Transforms, self.Params = liipToTransform(liipConfig[presetName])
self.Transforms = liipToTransform(liipConfig[presetName])
} else {
self.Key = self.Uri
}
Expand Down
2 changes: 1 addition & 1 deletion src/imgserver/processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func Process(obj *object.FileObject) (*response.Response) {
parent = storage.Get(obj.GetParent())
}

if len(obj.Transforms) == 0 && obj.Params == nil {
if obj.Transforms.NotEmpty == false {
return storage.Get(obj)
}

Expand Down
55 changes: 52 additions & 3 deletions src/imgserver/transforms/transforms.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,57 @@
package transforms

type Base struct {
Name string
Params map[string]interface{}
import "gopkg.in/h2non/bimg.v1"


type Transforms struct {
Height int
Width int
AreaHeight int
AreaWidth int
Top int
Left int
Quality int
Compression int
Zoom int
Crop bool
Enlarge bool
Embed bool
Flip bool
Flop bool
Force bool
NoAutoRotate bool
NoProfile bool
Interlace bool
StripMetadata bool
Trim bool

NotEmpty bool
}

func (self *Transforms) ResizeT(size []int, enlarge bool) (*Transforms) {
self.Width = size[0]
self.Height = size[1]
self.Enlarge = enlarge
self.NotEmpty = true
return self
}

func (self *Transforms) CropT(size []int, enlarge bool) (*Transforms) {
self.Width = size[0]
self.Height = size[1]
self.Enlarge = enlarge
self.Crop = true
self.NotEmpty = true
return self
}

func (self *Transforms) BimgOptions() (bimg.Options) {
return bimg.Options{
Width: self.Width,
Height: self.Height,
Enlarge: self.Enlarge,
Crop: self.Crop,
}
}


0 comments on commit d69d51e

Please # to comment.