committed by
GitHub
12 changed files with 205 additions and 29 deletions
-
2README.md
-
1weed/.gitignore
-
4weed/command/server.go
-
1weed/command/volume.go
-
4weed/filer/cassandra_store/cassandra_store.go
-
2weed/filer/postgres_store/postgres_store.go
-
16weed/images/resizing.go
-
42weed/images/rotate.go
-
81weed/server/filer_server_handlers_read.go
-
2weed/server/filer_server_handlers_write.go
-
75weed/server/volume_server_handlers_read.go
-
2weed/storage/needle_byte_cache.go
@ -0,0 +1 @@ |
|||||
|
/weed |
||||
@ -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 |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue