* 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
       @@ -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
       @@ -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
       @@ -0,0 +1,3 @@
       +GALLERY_ROW_HEIGHT=150
       +THUMBNAIL_QUALITY=83
       +THUMBNAIL_PATH="thm"
   DIR diff --git a/mkpicindex.sh b/mkpicindex.sh
       @@ -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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