Browse Source

旋转、重命名

pull/439/head
丁超 9 years ago
parent
commit
12f17e8b7c
  1. 42
      weed/images/rotate.go
  2. 11
      weed/server/volume_server_handlers_read.go
  3. BIN
      weed/weed

42
weed/images/rotate.go

@ -0,0 +1,42 @@
package images
import (
"bytes"
"image"
"image/color"
"image/gif"
"image/jpeg"
"image/png"
"github.com/chrislusf/seaweedfs/weed/glog"
"github.com/disintegration/gift"
)
func Rotate(ext string, data []byte, rotate int) (resized []byte) {
if rotate < 1 {
return data
}
srcImage, _, err := image.Decode(bytes.NewReader(data))
if err == nil {
var dstImage *image.NRGBA
g := gift.New(
gift.Rotate(float32(rotate), color.Opaque, gift.CubicInterpolation),
)
dstImage = image.NewNRGBA(g.Bounds(srcImage.Bounds()))
g.Draw(dstImage, srcImage)
var buf bytes.Buffer
switch ext {
case ".png":
png.Encode(&buf, dstImage)
case ".jpg", ".jpeg":
jpeg.Encode(&buf, dstImage, nil)
case ".gif":
gif.Encode(&buf, dstImage, nil)
}
return buf.Bytes()
} else {
glog.Error(err)
}
return data
}

11
weed/server/volume_server_handlers_read.go

@ -132,6 +132,17 @@ func (vs *VolumeServer) GetOrHeadHandler(w http.ResponseWriter, r *http.Request)
height, _ = strconv.Atoi(r.FormValue("height")) height, _ = strconv.Atoi(r.FormValue("height"))
} }
n.Data, _, _ = images.Resized(ext, n.Data, width, height) n.Data, _, _ = images.Resized(ext, n.Data, width, height)
//旋转
if r.FormValue("rotate") != "" {
rotate, _ := strconv.Atoi(r.FormValue("rotate"))
n.Data = images.Rotate(ext, n.Data, rotate)
}
}
//重命名
if r.FormValue("rename") != "" {
filename = r.FormValue("rename")
} }
if e := writeResponseContent(filename, mtype, bytes.NewReader(n.Data), w, r); e != nil { if e := writeResponseContent(filename, mtype, bytes.NewReader(n.Data), w, r); e != nil {

BIN
weed/weed

Loading…
Cancel
Save