~jadedctrl/jam-xwx-moe
~jadedctrl/jam-xwx-moe/bildosignoj/elporti.sh
~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 |
|