mirror of
https://gitee.com/sjqzhang/go-fastdfs.git
synced 2024-11-30 02:07:45 +08:00
68 lines
1.2 KiB
Go
68 lines
1.2 KiB
Go
package server
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"image"
|
|
"image/jpeg"
|
|
"image/png"
|
|
"io"
|
|
"net/http"
|
|
"os"
|
|
|
|
"github.com/nfnt/resize"
|
|
log "github.com/sjqzhang/seelog"
|
|
)
|
|
|
|
func (c *Server) ResizeImageByBytes(w http.ResponseWriter, data []byte, width, height uint) {
|
|
var (
|
|
img image.Image
|
|
err error
|
|
imgType string
|
|
)
|
|
reader := bytes.NewReader(data)
|
|
img, imgType, err = image.Decode(reader)
|
|
if err != nil {
|
|
log.Error(err)
|
|
return
|
|
}
|
|
fmt.Println(width, height)
|
|
img = resize.Resize(width, height, img, resize.Lanczos3)
|
|
if imgType == "jpg" || imgType == "jpeg" {
|
|
jpeg.Encode(w, img, nil)
|
|
} else if imgType == "png" {
|
|
png.Encode(w, img)
|
|
} else {
|
|
w.Write(data)
|
|
}
|
|
}
|
|
|
|
func (c *Server) ResizeImage(w http.ResponseWriter, fullpath string, width, height uint) {
|
|
var (
|
|
img image.Image
|
|
err error
|
|
imgType string
|
|
file *os.File
|
|
)
|
|
file, err = os.Open(fullpath)
|
|
if err != nil {
|
|
log.Error(err)
|
|
return
|
|
}
|
|
img, imgType, err = image.Decode(file)
|
|
if err != nil {
|
|
log.Error(err)
|
|
return
|
|
}
|
|
file.Close()
|
|
img = resize.Resize(width, height, img, resize.Lanczos3)
|
|
if imgType == "jpg" || imgType == "jpeg" {
|
|
jpeg.Encode(w, img, nil)
|
|
} else if imgType == "png" {
|
|
png.Encode(w, img)
|
|
} else {
|
|
file.Seek(0, 0)
|
|
io.Copy(w, file)
|
|
}
|
|
}
|