t* Simple Justified Gallery URI git clone git://git.codevoid.de/mkpicindex DIR Log DIR Files DIR Refs DIR README --- DIR commit 2a3e60611dcb21f20e3948eef263897d5f60b15a URI Author: Stefan Hagen <sh+git[at]codevoid[dot]de> Date: Wed, 23 Oct 2019 09:38:26 +0200 Initial commit Diffstat: A Makefile | 7 +++++++ A README | 13 +++++++++++++ A config.mk | 3 +++ A mkpicindex.sh | 764 +++++++++++++++++++++++++++++++ 4 files changed, 787 insertions(+), 0 deletions(-) --- DIR diff --git a/Makefile b/Makefile t@@ -0,0 +1,7 @@ + +include config.mk + +all: + ./mkpicindex.sh > index.html +clean: + rm -rf ${THUMBNAIL_PATH} index.html style.css justify.js DIR diff --git a/README b/README t@@ -0,0 +1,13 @@ +Usage: + + $ make + +This will create a justified gallery with all jpg, png and gif pictures +in the current directory. + + $ make clean + +This will remove all autogenerated files including thumbnails. + +Configure in `config.mk`. + DIR diff --git a/config.mk b/config.mk t@@ -0,0 +1,3 @@ +GALLERY_ROW_HEIGHT=150 +THUMBNAIL_QUALITY=83 +THUMBNAIL_PATH="thm" DIR diff --git a/mkpicindex.sh b/mkpicindex.sh t@@ -0,0 +1,764 @@ +#!/bin/sh + +# READ CONFIG FILE +. $PWD/config.mk + +# CREATE THUMBNAIL DIRECTORY +mkdir -p $THUMBNAIL_PATH + +trap cleanup 1 2 3 6 +cleanup() { + # DELETE BROKEN IMAGES + printf '%s\n' "Removing incomplete thumbnails." >&2 + find $THUMBNAIL_PATH -name "*_tmp.*" -exec rm -v "{}" \; +} + +# PRINT HEADER +printf '%s\n' '<html> + <head> + <title>Bimbos</title> + <meta name="viewport" content="width=device-width"> + <link href="style.css" rel="stylesheet"> + <script src="justify.js"></script> + </head> + <body style="color:orange; background:black;"> + <div id="base"> +' + +# RESCALE AND PRINT IMAGE SOURCE +# PARAM 1: original +# 2: thumbnail_basename +# 3: thumbnail_format (extension) +add_image() { + local FILE="$1" + local THUMB="$THUMBNAIL_PATH/$2-$GALLERY_ROW_HEIGHT" + local EXT="$3" + if ! [ -f "$FILE" ]; then return; fi; + printf '%s\n' "Adding image: $FILE" >&2 + if ! [ -f "$THUMB.$EXT" ] && [ "$FILE" != "$THUMB.$EXT" ]; + then convert -quality $THUMBNAIL_QUALITY -sharpen 2x2 \ + -coalesce -resize 1600x$GALLERY_ROW_HEIGHT\> \ + -deconstruct "$FILE" "${THUMB}_tmp.$EXT" && \ + mv "${THUMB}_tmp.$EXT" "$THUMB.$EXT" + fi + local WH="$(identify -format ' %w %h ' "$THUMB.$EXT" \ + | awk '{ print "width="$1" height="$2 }')" + printf ' %s\n' "<a href=\"$FILE\">" + printf ' %s\n' "<img $WH src=\"$THUMB.$EXT\">" + printf ' %s\n' "</a>" +} + +### MAIN LOOP ########################################################## + +# JPEG, PNG ORIGINAL -> JPEG THUMBNAIL +for file in *.{png,jpg,jpeg,PNG,JPG,JPEG}; +do +# add_image <original> <thumbnail_basename> <thumnail_format> + add_image "$file" "${file%%.*}" "jpeg" +done + +# GIF ORIGINAL -> GIF THUMBNAIL +for file in *.{gif,GIF}; +do + add_image "$file" "${file%%.*}" "gif" +done + +### MAIN LOOP END ###################################################### + +# PRINT FOOTER +printf '%s\n' " + </div> + <script> + \$(\"#base\").justifiedGallery({ + rowHeight : $GALLERY_ROW_HEIGHT/0.8, + maxRowHeight : $GALLERY_ROW_HEIGHT, + randomize : true, + waitThumbnailsLoad : false, + lastRow : \"nojustify\", + margins : 3 + }); + </script> + </body> +</html>" + + + +# ASSETS (style.css, justify.js) ####################################### +printf '%s' ' +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