我在不存在的情況下動態創建圖像。 IE example_t500.jpg當被要求時將從example.jpg創建。我遇到的問題是在顯示丟失圖像之前請求顯示創建的圖像。剛剛創建的Go服務圖像
代碼:
package main
import (
"image/jpeg"
"net/http"
"log"
"os"
"strings"
"fmt"
"strconv"
resizer "github.com/nfnt/resize"
)
func WebHandler (w http.ResponseWriter, r *http.Request) {
var Path = "../../static/img/photos/2014/11/4/test.jpg"
ResizeImage(Path, 500)
http.Handle("/", http.FileServer(http.Dir("example_t500.jpg")))
}
func ResizeImage (Path string, Width uint) {
var ImageExtension = strings.Split(Path, ".jpg")
var ImageNum = strings.Split(ImageExtension[0], "/")
var ImageName = ImageNum[len(ImageNum)-1]
fmt.Println(ImageName)
file, err := os.Open(Path)
if err != nil {
log.Fatal(err)
}
img, err := jpeg.Decode(file)
if err != nil {
log.Fatal(err)
}
file.Close()
m := resizer.Resize(Width, 0, img, resizer.Lanczos3)
out, err := os.Create(ImageName + "_t" + strconv.Itoa(int(Width)) + ".jpg")
if err != nil {
log.Fatal(err)
}
defer out.Close()
jpeg.Encode(out, m, nil)
}
func main() {
http.HandleFunc("/", WebHandler)
http.ListenAndServe(":8080", nil)
}
這是我第一次嘗試使用Go時遇到了問題渲染圖像。任何幫助表示讚賞。
這個效果很好。有沒有一種方法可以在不實際創建的情況下渲染調整大小的圖像? – 2014-11-04 21:38:34
當然..讓我更新我的答案,包括這一點。 – 2014-11-04 21:40:10
答覆已更新。 – 2014-11-04 21:43:56