From 7330a4256e268eb2adfd338443b83c281044de59 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sun, 15 May 2022 18:50:23 +0300 Subject: [PATCH] Initial commit --- galgen.zsh | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100755 galgen.zsh diff --git a/galgen.zsh b/galgen.zsh new file mode 100755 index 0000000..5d16919 --- /dev/null +++ b/galgen.zsh @@ -0,0 +1,98 @@ +#!/usr/bin/env zsh +# Copyright (C) 2022 Sergey Matveev + +set -e +setopt EXTENDED_GLOB + +pagesize=100 + +imgs=((*.jxl|*.webp~*.preview.webp)(Om)) +for (( i=1 ; i <= ${#imgs} ; i++ )) { + local img=${imgs[$i]} + echo $i $img + local dst=$i.img.html + cat > $dst < +Image ${i}/${#imgs}: $img +EOF + [[ $i -eq 1 ]] || + echo "<<<" >> $dst + [[ $i -eq ${#imgs} ]] || + echo ">>>" >> $dst + echo "
\"$img\"" >> $dst + [[ -r ${img}.txt ]] && { + echo "
" >> $dst
+        cat ${img}.txt >> $dst
+        echo "
" >> $dst + } + echo "
" >> $dst + if [[ $img:e = jxl ]] ; then + echo "
" >> $dst
+        jxlinfo $img > $img.info
+        cat $img.info >> $dst
+        echo "
" >> $dst + echo "Alternative formats:" >> $dst + if grep -q "JPEG bitstream reconstruction" $img.info ; then + [[ -r $img.jpg ]] || { + djxl $img $img.jpg + touch -r $img $img.jpg + } + echo "JPEG" >> $dst + else + [[ -r $img.png ]] || { + djxl $img $img.ppm + pamtopng < $img.ppm > $img.png + rm $img.ppm + pngcrush -rem alla -rem allb -z 2 $img.png $img.png.png + mv $img.png.png $img.png + advpng -z -4 $img.png + touch -r $img $img.png + } + echo "PNG" >> $dst + fi + rm $img.info + [[ -r $img.preview.webp ]] || djxl $img $img.ppm + else + echo "
" >> $dst
+        webpinfo $img >> $dst
+        echo "
" >> $dst + [[ -r $img.preview.webp ]] || dwebp $img -ppm -o $img.ppm + fi + echo "
" >> $dst
+    exiftool -a -u -g1 $img >> $dst
+    echo "
" >> $dst + [[ -r $img.ppm ]] && { + pnmscale -w 100 < $img.ppm > $img.ppm.ppm + mv $img.ppm.ppm $img.ppm + cwebp -pass 10 -alpha_filter best -m 6 -mt -o $img.preview.webp $img.ppm + rm $img.ppm + touch -r $img $img.preview.webp + } + echo "" >> $dst + touch -r $img $dst +} + +pages=$(( ${#imgs} / $pagesize )) +[[ $(( $pages * $pagesize )) -lt ${#imgs} ]] && pages=$(( $pages + 1 )) +for (( p=1 ; p <= $pages ; p++ )) { + local dst=$p.page.html + cat > $dst < +Page ${p}/$pages +EOF + [[ $p -eq 1 ]] || + echo "<<<" >> $dst + [[ $p -eq $pages ]] || + echo ">>>" >> $dst + echo "| home" >> $dst + echo "| end" >> $dst + echo "
" >> $dst + for (( i=1 ; i <= $pagesize ; i++ )) { + img=$(( ( $p - 1 ) * $pagesize + $i )) + [[ $img -le ${#imgs} ]] || break + echo "" >> $dst + echo "\"preview" >> $dst + } + echo "" >> $dst + echo page $p +} -- 2.44.0