aboutsummaryrefslogtreecommitdiff
path: root/cmd/thumber/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/thumber/main.go')
-rw-r--r--cmd/thumber/main.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/cmd/thumber/main.go b/cmd/thumber/main.go
new file mode 100644
index 0000000..c968853
--- /dev/null
+++ b/cmd/thumber/main.go
@@ -0,0 +1,57 @@
+package main
+
+import (
+ "flag"
+ "log"
+ "os"
+ "path/filepath"
+ "strings"
+
+ "github.com/Xe/x/internal"
+ "github.com/disintegration/imaging"
+)
+
+var (
+ dirToWalk = flag.String("walkdir", "./in", "directory to walk and generate thumbnails for")
+)
+
+func main() {
+ internal.HandleStartup()
+
+ err := filepath.Walk(*dirToWalk, makeThumbnail)
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+
+func makeThumbnail(fname string, info os.FileInfo, err error) error {
+ if info.IsDir() {
+ return nil
+ }
+
+ if strings.HasSuffix(fname, ".thumb.png") {
+ return nil
+ }
+
+ if strings.HasSuffix(fname, ".html") {
+ return nil
+ }
+
+ _, err = os.Stat("thumbs/" + filepath.Base(fname) + ".thumb.png")
+ if err == nil {
+ log.Printf("skipping %s", fname)
+ return nil
+ }
+
+ log.Printf("Starting to open %s", fname)
+
+ img, err := imaging.Open(fname)
+ if err != nil {
+ return err
+ }
+
+ croppedImage := imaging.Thumbnail(img, 256, 256, imaging.Lanczos)
+ err = imaging.Save(croppedImage, "thumbs/"+filepath.Base(fname)+".thumb.png")
+
+ return err
+}