diff --git a/README.md b/README.md
index 48037e0..065a6e0 100644
--- a/README.md
+++ b/README.md
@@ -4,6 +4,7 @@ Zum Kompilieren folgende Go-Abhängigkeiten installieren:
- `go get github.com/gorilla/mux`
- `go get github.com/boombuler/barcode`
- `go get github.com/boombuler/barcode/qr`
-
+ - `go get github.com/disintegration/imaging`
+
Kompilieren mit: `go build main.go`
diff --git a/main.go b/main.go
index 780310b..a11ad83 100644
--- a/main.go
+++ b/main.go
@@ -9,9 +9,11 @@ import (
"net/http"
"os"
"path"
+ "strings"
"github.com/boombuler/barcode"
"github.com/boombuler/barcode/qr"
+ "github.com/disintegration/imaging"
"github.com/gorilla/mux"
)
@@ -24,6 +26,7 @@ func main() {
router := mux.NewRouter()
router.HandleFunc("/folder/{foldername:.*}", GetFolderContent).Methods("GET")
router.HandleFunc("/qr/{qrlink:.*}", GetQRCode).Methods("GET")
+ router.HandleFunc("/thumb/{imgname:.*}", GetThumbNail).Methods("GET")
router.PathPrefix("/img/").Handler(http.StripPrefix("/img/", http.FileServer(http.Dir("C:/Fotos")))).Methods("GET")
router.PathPrefix("/").Handler(http.FileServer(http.Dir("web"))).Methods("GET")
log.Fatal(http.ListenAndServe(":8000", router))
@@ -41,7 +44,9 @@ func GetFolderContent(w http.ResponseWriter, r *http.Request) {
var dateien []string
for _, f := range files {
- dateien = append(dateien, f.Name())
+ if !strings.HasSuffix(f.Name(), ".thumb.jpg") {
+ dateien = append(dateien, f.Name())
+ }
}
json.NewEncoder(w).Encode(dateien)
@@ -66,3 +71,51 @@ func GetQRCode(w http.ResponseWriter, r *http.Request) {
// Datei ausgeben
png.Encode(w, qrCode)
}
+
+func GetThumbNail(w http.ResponseWriter, r *http.Request) {
+
+ // Variablen auswerten
+ params := mux.Vars(r)
+ pIMGName := params["imgname"]
+
+ // Das Thumbnail soll nur generiert werden wenn es noch nicht existiert
+ if !fileExists(StartUpPath + "/" + pIMGName + ".thumb.jpg") {
+ // Originaldatei öffnen, welche angefragt wird
+ src, err := imaging.Open(StartUpPath + "/" + pIMGName)
+ if err != nil {
+ log.Fatalf("failed to open image: %v", err)
+ }
+
+ // Foto auf 200px skalieren
+ src = imaging.Resize(src, 200, 0, imaging.NearestNeighbor)
+
+ err = imaging.Save(src, StartUpPath+"/"+pIMGName+".thumb.jpg")
+ if err != nil {
+ log.Fatalf("failed to save image: %v", err)
+ }
+
+ // Datei ausgeben
+ png.Encode(w, src)
+ } else {
+
+ src, err := imaging.Open(StartUpPath + "/" + pIMGName + ".thumb.jpg")
+ if err != nil {
+ log.Fatalf("failed to open image: %v", err)
+ }
+
+ // Datei ausgeben
+ png.Encode(w, src)
+ }
+}
+
+//--------------------------------------------------------------------------
+// Hilfsfunktionen
+//--------------------------------------------------------------------------
+
+func fileExists(filename string) bool {
+ info, err := os.Stat(filename)
+ if os.IsNotExist(err) {
+ return false
+ }
+ return !info.IsDir()
+}
diff --git a/web/index.html b/web/index.html
index 5109a68..99b62c1 100644
--- a/web/index.html
+++ b/web/index.html
@@ -64,7 +64,7 @@
for ( var i = 0, l = content.length; i < l; i++ ) {
var ObjInhalt = content[i];
$("#Ordner").append(""+
- ""+
+ "
"+
""+
ObjInhalt+"