我在不存在的情况下动态创建图像。 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