~jadedctrl/jam-xwx-moe

~jadedctrl/jam-xwx-moe/bildosignoj/elporti.sh
 ..
0 #!/usr/bin/sh
1 # Ĉi tiu skripto densigos ĉiujn bildosignojn, kaj movos ilin al eliga dosierujo.
2 # Ĉiu bildosignaro iom perdos kvaliton; la intenseco de tiu perdo varias laŭ
3 # specialaj konsideroj, kiujn vi povas legi pli sube, kie vi ankaŭ povas ŝanĝi
4 # la kvalitan perdon laŭ viaj propraj deziroj kaj bezonoj.
5
6 # Certigu, ke eliga dosierujo ekzistas.
7 out_dir="$1";
8 arc_dir="$2";
9 if test -z "$out_dir"; then
10 echo "Uzmaniero: $(basename "$0") ELIGUJO ARĤIVUJO"
11 exit 1
12 elif test -z "$arc_dir"; then
13 echo "Uzmaniero: $(basename "$0") ELIGUJO ARĤIVUJO"
14 exit 2
15 fi
16 mkdir -p "$out_dir";
17 mkdir -p "$arc_dir";
18
19 # optimise [min] [max] [dosierujoj] …
20 # Elkopias kaj densigas ĉiujn PNG-bildojn en ĉiu el la dosierujoj.
21 # Densigo okazas perde, en kvaliteca intervalo inter 0–100, donita en min/max.
22 # Bonvolu vidi la dokumentaĵon de pngquant por pli da informoj.
23 optimise () {
24 min="$1"; shift
25 max="$1"; shift
26 for dir in "$@"; do
27 echo "MIN: $min | MAX: $max | DIR: $dir"
28 echo "---------------------------------------------"
29 # Kopiu ĉiun dosierujon.
30 cp --parents -rt "$out_dir" "$dir"
31 # Densigu kopiojn de ĉiuj dosieroj.
32 for file in "$out_dir/$dir"/*.png; do
33 pngquant \
34 --output "$file" --quality "$min"-"$max" \
35 --speed 1 --force --strip \
36 "$file"
37 zopflipng \
38 --iterations=32 --filters=0me \
39 --lossy_transparent -y \
40 "$file" "$file"
41 done
42 done
43 }
44
45 # archive [dosierujoj] …
46 # Pakas densigitajn bildosignarojn en arĥivon, kune kun »pack.json«.
47 # Voku ĉi tiun funkcion post la funkcio »optimise«, kun radika eniga
48 # dosierujo kiel parametro.
49 archive() {
50 for dir in "$@"; do
51 arc=$(basename "$dir")
52 arc_dir=$(realpath "$arc_dir")
53 echo "… ARĤIVADO DE $arc …"
54 (cd $out_dir && zip -9r "$arc_dir/$arc.zip" "$dir"/*.png "$dir"/*.gif "$dir"/.prio.md "$dir"/pack.json)
55 echo "---------------------------------------------"
56 done
57 }
58
59
60 # flatten [dosierujoj]
61 # Platigas eligan dosierujon de bildosignoj; t.e., ĝi movas ĉion de
62 # subdosierujoj al la radikan dosierujon de la bildosignaro.
63 # eligo/bildosignaro/subdosierujo/A.png → eligo/bildosignaro/A.png
64 flatten() {
65 for dir in "$@"; do
66 (cd $out_dir; mv "$dir"/*/* "$dir"; rmdir "$dir"/*/)
67 done
68 }
69
70
71 # Anseroj - Ne devas tre atenti detalojn.
72 optimise 60 80 "Anseroj"
73 archive "Anseroj"
74
75 # Astroj - Ne devas tre atenti detalojn.
76 optimise 60 80 "Astroj"
77 archive "Astroj"
78
79 # Babilado - Povas iom gravi detaloj.
80 optimise 80 90 "Babilado"
81 archive "Babilado"
82
83 # Bitludoj – Povus iom gravi detaloj.
84 optimise 80 90 "Bitludoj malliberaj"
85 archive "Bitludoj malliberaj"
86
87 # Etikedoj – Iuj povus havi gravajn etajn detalojn.
88 optimise 90 95 "Etikedoj"
89 archive "Etikedoj"
90
91 # Filmoj – Preskaŭ temas pri fotoj.
92 optimise 40 60 "Filmoj"
93 archive "Filmoj"
94
95 # Flagoj – Iuj havas gravajn etajn detalojn.
96 optimise 90 95 "Flagoj"/*
97 archive "Flagoj"
98 flatten "Flagoj"
99
100 # Gutkatoj – Iom devas atenti detalojn.
101 optimise 70 80 "Gutkatoj"
102 archive "Gutkatoj"
103
104 # Haiku – Ili apenaŭ densiĝas, kaj la artstilo postulas kvalitecon.
105 optimise 90 95 "Haiku"
106 archive "Haiku"
107
108 # Laborado!! – Gravas la detaloj tie ĉi.
109 optimise 90 95 "Laborado!!"
110 archive "Laborado!!"
111
112 # Madoka - Ne devas tre atenti detalojn.
113 optimise 70 80 "Madoka Maĝika"
114 archive "Madoka Maĝika"
115
116 # Manĝaĵoj – Ne devas tre atenti detalojn.
117 optimise 60 80 "Manĝaĵoj"
118 archive "Manĝaĵoj"
119
120 # Moneroj – Ili estas fotoj. Tre densigu!
121 optimise 30 40 "Moneroj"/*
122 archive "Moneroj"
123 flatten "Moneroj"
124
125 # Programaroj – Koloraj transiroj.
126 optimise 80 90 "Programaro libera" "Programaro mezlibera"
127 archive "Programaro libera" "Programaro mezlibera"
128
129 # Spiono×Familio - Ne devas tre atenti detalojn.
130 optimise 70 80 "Spiono×Familio"
131 archive "Spiono×Familio"
132 flatten "Spiono×Familio"
133
134 # Testoj – Ne devas tre atenti detalojn.
135 optimise 60 80 "Testing"
136 archive "Testing"
137