From 7ac001c42410e1b4cce3efd4ba4b29c01beb30e4 Mon Sep 17 00:00:00 2001 From: Tilman Kranz Date: Sat, 9 Dec 2023 20:44:11 +0100 Subject: [PATCH] initial commit --- 01-rename.sh | 41 ++++++++ 02-convert.sh | 187 +++++++++++++++++++++++++++++++++ 03-pdf.sh | 98 +++++++++++++++++ template/.gitignore | 1 + template/a4paper/landscape.pdf | Bin 0 -> 22319 bytes template/a4paper/portrait.pdf | Bin 0 -> 22439 bytes 6 files changed, 327 insertions(+) create mode 100755 01-rename.sh create mode 100755 02-convert.sh create mode 100755 03-pdf.sh create mode 100644 template/.gitignore create mode 100644 template/a4paper/landscape.pdf create mode 100644 template/a4paper/portrait.pdf diff --git a/01-rename.sh b/01-rename.sh new file mode 100755 index 0000000..625db2a --- /dev/null +++ b/01-rename.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +## +# Main Program + +dir=$(dirname "$(readlink -f "$0")") +origdir="$dir/orig" +indir="$dir/in" + +if ! cd "$dir" ; then + echo "ERROR: Could not change to directory \"$dir\"; aborted." >&2 + exit 1 +elif ! test -d "$origdir" ; then + echo "ERROR: Directory \"$origdir\" not found; aborted." >&2 + exit 1 +elif ! mkdir -p "$indir" ; then + echo "ERROR: Could not create directory \"$indir\"; aborted." >&2 + exit 1 +elif ! rm -f -- "$indir/"*.jpg ; then + echo "ERROR: Could not remove files in \"$indir\"; aborted." >&2 + exit 1 +else + i=1 + rv=0 + + while read -r jpg ; do + renamed=$(printf "%02d" "$i").jpg + + if cp "$jpg" "$indir/$renamed" ; then + echo "INFO: Copied \"$jpg\" to \"$renamed\"." >&2 + else + echo "WARNING: Could not copy \"$jpg\" to \"$renamed\"." >&2 + rv=1 + fi + + i=$((i+1)) + done < <(ls --reverse --sort time -- "$origdir/"*.jpg) + + exit "$rv" +fi + diff --git a/02-convert.sh b/02-convert.sh new file mode 100755 index 0000000..da225f5 --- /dev/null +++ b/02-convert.sh @@ -0,0 +1,187 @@ +#!/bin/bash + +## +# Configuration + +# Before morphology analysis, reduce image dimensions by this factor +simplify=2 + +# Morphology to apply to reduce content to main area +morphology="Open:6" +morphology_shape="Disk" + +# Color simplification to apply (50x50% means black/white) +random_treshold="50x50%" + +# Treshold for connected components detection +area_treshold=500 + +# Parameters for sigmoidal contrast adjustment for trimming +sigmoidal_contrast_trim="35,30%" + +# Parameters for sigmoidal contrast adjustment for result images +sigmoidal_contrast="45,50%" + +# Number of colors result images are quantized to +posterize=6 + +# Keep intermediate images after processing (note that they will be removed in +# any case at the next run of this script) +keep_tmpfiles=true + +## +# Main Program + +dir="$(dirname "$(readlink -f "$0")")" +tmpdir="$dir/tmp" +indir="$dir/in" +comdir="$dir/com" +outdir="$dir/out" +resize_percent=$((100/simplify)) + +if ! cd "$dir" ; then + echo "ERROR: Could not change to directory \"$dir\"; aborted." >&2 + exit 1 +elif ! mkdir -p "$comdir" "$outdir" "$tmpdir" ; then + echo "ERROR: Could not create working directories; aborted." >&2 + exit 1 +elif ! rm -f -- "$comdir/"*.* ; then + echo "ERROR: Could not delete existing component files; aborted." >&2 + exit 1 +elif ! rm -f -- "$tmpdir/"*.* ; then + echo "ERROR: Could not delete existing tempfiles; aborted." >&2 + exit 1 +elif ! rm -f -- "$outdir/"*.* ; then + echo "ERROR: Could not delete existing results; aborted." >&2 + exit 1 +else + rv=0 + + for jpg in "$indir/"*.jpg ; do + base=$(basename "$jpg" .jpg) + tmp1="$tmpdir/$base.tmp1.png" + tmp2="$tmpdir/$base.tmp2.png" + com="$tmpdir/$base.com.png" + trimmed="$tmpdir/$base.trimmed.png" + inf="$tmpdir/$base.txt" + out="$outdir/$base.png" + + if ! convert \ + "$jpg" \ + -colorspace RGB \ + -sigmoidal-contrast "$sigmoidal_contrast_trim" \ + -resize "$resize_percent%" \ + -channel All -random-threshold "$random_treshold" \ + -morphology "$morphology" "$morphology_shape" \ + "$tmp1" + then + echo "ERROR: Could not create test image \"$tmp1\"; skipped." >&2 + rv=1 + continue + fi + + draw=() + + while read -r primitive ; do + draw+=("-fill" "white" "-draw" "$primitive") + done < <( + convert \ + "$tmp1" \ + -define connected-components:verbose=true \ + -define connected-components:exclude-header=true \ + -define connected-components:sort-order=increasing \ + -define connected-components:area-threshold="$area_treshold" \ + -virtual-pixel None \ + -connected-components 8 \ + -auto-level \ + "$com" | \ + perl -e ' + while(<>){ + chomp; + next unless /(\d+)x(\d+)\+(\d+)\+(\d+)/; + printf + STDERR + "DEBUG: component: $_\n"; + printf + "rectangle %d,%d,%d,%d\n", + $1, $2, $1+$3, $2+$4; + } + + ' | \ + sort | \ + uniq + ) + + printf "DEBUG: connected components in \"%s\":" "$tmp1" + for d in "${draw[@]}" ; do + printf " \"%s\"" "$d" + done + printf "\n" + + if ! convert \ + "$tmp1" \ + -fill black -colorize 100 \ + "${draw[@]}" \ + "$tmp2" + then + echo "ERROR: Could not convert \"$tmp1\" to \"$tmp2\"; skipped." >&2 + rv=1 + continue + elif ! convert \ + "$tmp2" \ + -trim info: \ + > "$inf" + then + echo "ERROR: Could not determine trim info from \"$tmp2\"; skipped." >&2 + rv=1 + continue + fi + + if "$keep_tmpfiles" ; then + if ! convert \ + "$tmp2" \ + -trim \ + "$trimmed" + then + echo "ERROR: Could not test trim \"$tmp2\"; skipped." >&2 + rv=1 + continue + fi + fi + + # upscale crop area from smaller temporary picture sizes + crop=$(simplify=$simplify perl -MEnv -e ' + while(<>) { + chomp(); + s/(\d+)/$1*${simplify}/eg; + /(\d+)x(\d+) \d+x\d+\+(\d+)\+(\d+)/ && do { + print $1."x".$2."+".$3."+".$4; + } + } + ' < "$inf") + + if ! "$keep_tmpfiles" ; then + if ! rm -f -- "$tmp1" "$tmp2" "$trimmed" "$inf" ; then + echo "WARNING: Could not remove temporary files in \"$dir/tmp\"." >&2 + rv=1 + fi + fi + + echo "Processing $base: crop=$crop ..." + + if ! convert \ + "$jpg" \ + -crop "$crop" \ + -sigmoidal-contrast "$sigmoidal_contrast" \ + +dither -posterize "$posterize" \ + "$out" + then + echo "ERROR: Could not process \"$jpg\"; skipped." >&2 + rv=1 + continue + fi + done + + exit "$rv" +fi + diff --git a/03-pdf.sh b/03-pdf.sh new file mode 100755 index 0000000..d86c1be --- /dev/null +++ b/03-pdf.sh @@ -0,0 +1,98 @@ +#!/bin/bash +# shellcheck disable=SC2046 + +## +# Configuration + +# Paper size of all pages +paper="a4paper" + +# Offset in page where image should be placed +offset="1cm 3cm" + +# Factor to scale image by before placing in page +scale=1 + +# Filename of complete result PDF +result="pdf/result.pdf" + +## +# Main Program + +dir="$(dirname "$(readlink -f "$0")")" + +if ! cd "$dir" ; then + echo "ERROR: Could not change to directory \"$dir\"; aborted." >&2 + exit 1 +elif ! mkdir -p pdf tmp ; then + echo "ERROR: Could not create \"$dir/{pdf,tmp}\"; aborted." >&2 + exit 1 +elif ! rm -f -- "pdf/"*.* ; then + echo "ERROR: Could not delete existing results in \"$dir/pdf\"; aborted." >&2 + exit 1 +else + rv=0 + + for png in "out/"*.png ; do + echo "INFO: Processing \"$png\" ..." >&2 + + read -r width height < <( + identify -verbose "$png" | \ + perl -ne '/Geometry: (\d+)x(\d+)/ && print "$1 $2"' + ) + + if [[ -z $width ]] || [[ -z $height ]] ; then + echo "ERROR: Could not identify width or height of \"$png\"; skipped." >&2 + rv=1 + continue + elif [[ $width -gt $height ]] ; then + backdrop=template/a4paper/landscape.pdf + jam_landscape=--landscape + else + backdrop=template/a4paper/portrait.pdf + jam_landscape=--no-landscape + fi + + base=$(basename "$png" .png) + pdf=tmp/$base.pdf + jammed=tmp/$base-pdfjam.pdf + backdropped=tmp/$base.backdropped.pdf + + if ! convert "$png" "$pdf" ; then + echo "ERROR: Could not convert \"$png\" to PDF; skipped." >&2 + rv=1 + continue + elif ! pdfjam \ + --quiet \ + --outfile tmp \ + --paper "$paper" \ + "$jam_landscape" \ + --scale "$scale" \ + --offset "$offset" \ + "$pdf" + then + echo "ERROR: Could not align \"$pdf\"; skipped." >&2 + rv=1 + continue + elif ! pdftk \ + "$jammed" \ + stamp "$backdrop" \ + output "$backdropped" + then + echo "ERROR: Could not watermark \"$pdf\"; skipped." >&2 + rv=1 + continue + fi + done + + if ! pdftk $(ls -- "tmp/"*.backdropped.pdf) cat output "$result" ; then + echo "ERROR: Could not concatenate \"$result\"." >&2 + rv=1 + elif ! rm -f -- "tmp/"*.pdf ; then + echo "ERROR: Could not remove tempfiles in \"$dir/tmp\"." >&2 + rv=1 + fi + + exit "$rv" +fi + diff --git a/template/.gitignore b/template/.gitignore new file mode 100644 index 0000000..644844a --- /dev/null +++ b/template/.gitignore @@ -0,0 +1 @@ +*/*.svg diff --git a/template/a4paper/landscape.pdf b/template/a4paper/landscape.pdf new file mode 100644 index 0000000000000000000000000000000000000000..aca8fce0ae5b45e20c4c551941849fc27e65ba33 GIT binary patch literal 22319 zcmV)3K+C@+P((&8F)lR4?5av(28Y+-a|L}g=dWMv9IJ_>Vma%Ev{3V58Qy~~a)IgBN^x37rx026I`OP|rJ zSq}o8m5ZALboKuOqr-DZnY%{;1tb#48>E|Fl*G5B^mXt5{_nK^*H-(^qqR}Le*U@s z_jP}-R7P%J@kjdl&;R)PAOG+D^&kJ|n)SQ&{59_HTI$z7U#Zpa(fe1+-|22&e*&@g zKX=&(l>nUZ!QUTs{PlnBM)N&pEnkm6%F3w?v|Z}M^>zLob=~>DN7wgGyifM8bp78~ zTh^tGEDPiA?R%`^@SlL^ciP0>aQeoQe}}KWzSrGZpzU?|4v!>SsK5tYzGuo`e=ZbQ z;L?H{m)Go3~(>$sB^E+x!R%2sQZuIi@eFZ4t##^-=l#pZ;0sjKv&8G-Wy;T z-SSKa_TR5B_2@C~_dfoMaStE&nBR9Er_Q+-*j|D$42OOGXR$5x4qwsDnZEO5m;~c< zZ_eSrKRWO)1~q+9b639}3uJGKIUkGMVeiG-Y^K)__$+elvhrBuf@4vuzy}jRF3vb!MQGH4GcmTJ0-&rn;{z_CZY$BB__ z_OPW^AA6FzfqmF6y6d=}@XA@=8)AL8vJ7mSz94fg27(|aGpBvN*U_3b4>PmvS`*eE zDU~;R0?cdZ`?Rayh%(r7<26aG6%h8a<-5H5_gz7^yRkc%&<)nc?wAPA-)mO;yxG1G z8LvN9C1g(!)~0?;Y=B}Lz-GVN)Xdg6_4~^Ww#un5SQ{G#9l17A8bD-QYPa=OGYb%N zBJk&zss9)IC*5ZQ4QnTMWlEcdkM)wae0VI8R5-2uySKc-y(;#+>{YR6I z$2@0|!+)?T|3UZtjz!}XUv&9*BSEx#h4u-#;oFE%&h&%nAN;9W_8Y~#J&fO zQd(3AgE2ei!I=Z)`!f)+*wWZ6qkbaJZrcrS=5akStj_n}o`JiiV9^`wTdgOH&eb#% zap(=TJT9?lhaVi;5#rFf8Y^`Uy}?`aXB_%MTZ59-IP?a=i=9L7e)d@(92z~%BRKR1 zwUc*im%*q$81#m1lZip^=3%cmgWh0G^TD9=*6KIMK3Wt({-)y9OHqx+$v;wj%xMfoPKmXUi zYNA9FWt!*$SKmBkFI`7Wf<2Ukhktea3Z#`jv?Kr6n% zg5qr(zstcNL*&^Uu{%_~ecSv6^4ZiZ2>l;J*!R;G6~I&*cYA$;TZmu!-Z0zFYOF8s zcEDpH#Wq-T2UxkfHlim}`}$r|09VKGHuI_3dMit3)~eCA%&lXl?52mb%-Tsi{@k#% zL0b@O!&=N`PiM2eQSWSEod%M20<&4*KL-KzY=KzI?BQ*|HEi@!4PBawn_P>(Z`u&ryk$$Pt?q{w^kay$thRPzBKBt5`Y^U-shEl6 zHX=7kAc`UWM2U^4wlek)HZ&7%#aPZ|Rz{wh87w5&o|7|;g|vr$cTG%kh-0y_`p
4p+0R*;W(=exl9Qy4)U)(Ouj1u;J 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