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
-
4weed/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