Skip to content

Instantly share code, notes, and snippets.

@bracki
Created March 2, 2014 21:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bracki/9313981 to your computer and use it in GitHub Desktop.
Save bracki/9313981 to your computer and use it in GitHub Desktop.
Simple image renderer with Go.
package main
import (
"bytes"
"github.com/quirkey/magick"
"io/ioutil"
"log"
"net/http"
"net/url"
"path/filepath"
"time"
)
func imageHandler(w http.ResponseWriter, req *http.Request) {
uri := req.FormValue("u")
log.Printf("Requesting image: %s", uri)
response, err := http.Get(uri)
if err != nil {
log.Fatal(err)
}
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
log.Fatal(err)
}
u, err := url.Parse(uri)
if err != nil {
log.Fatal(err)
}
ext := filepath.Ext(u.Path)
log.Printf("Treating image: %s as %s", uri, ext)
image, err := magick.NewFromBlob(body, ext)
defer image.Destroy()
if err != nil {
log.Fatal(err)
}
err = image.Resize("400x200")
slice, err := image.ToBlob("jpg")
http.ServeContent(w, req, filepath.Base(u.Path), time.Now(), bytes.NewReader(slice))
}
func main() {
http.HandleFunc("/image", imageHandler)
print("listening")
http.ListenAndServe(":4001", nil)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment