Mercurial > libervia-media
comparison games/cards/split_card.sh @ 4:b51e7418840e
file reorganisation
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 18 Jun 2011 16:39:37 +0200 |
parents | frontends/src/wix/images/split_card.sh@8b41eb519075 |
children |
comparison
equal
deleted
inserted
replaced
3:d2197cda5c83 | 4:b51e7418840e |
---|---|
1 #!/bin/sh | |
2 #This script split an image with cards, used to split cards from the Tarot deck found on Wikimedia Commons | |
3 #This script work with any resolution on the initial image | |
4 #Copyright (C) 2009, 2010 Jérôme Poisson (goffi@goffi.org) | |
5 | |
6 #This program is free software: you can redistribute it and/or modify | |
7 #it under the terms of the GNU General Public License as published by | |
8 #the Free Software Foundation, either version 3 of the License, or | |
9 #(at your option) any later version. | |
10 | |
11 #This program is distributed in the hope that it will be useful, | |
12 #but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 #GNU General Public License for more details. | |
15 | |
16 #You should have received a copy of the GNU General Public License | |
17 #along with this program. If not, see <http://www.gnu.org/licenses/>. | |
18 | |
19 dest_dir=cards | |
20 | |
21 get_face_name() | |
22 { | |
23 if [ $1 -le 10 ] | |
24 then | |
25 echo $1 | |
26 else | |
27 case $1 in | |
28 11) echo valet;; | |
29 12) echo cavalier;; | |
30 13) echo dame;; | |
31 14) echo roi;; | |
32 esac | |
33 fi | |
34 } | |
35 | |
36 get_card_name() | |
37 { | |
38 if [ $1 -le 21 ] | |
39 then | |
40 echo "atout_$1" | |
41 elif [ $1 -eq 22 ]; then | |
42 echo "atout_excuse" | |
43 elif [ $1 -le 36 ]; then | |
44 echo "pique_$(get_face_name $(($1-22)))" | |
45 elif [ $1 -le 50 ]; then | |
46 echo "coeur_$(get_face_name $(($1-36)))" | |
47 elif [ $1 -le 64 ]; then | |
48 echo "carreau_$(get_face_name $(($1-50)))" | |
49 else | |
50 echo "trefle_$(get_face_name $(($1-64)))" | |
51 fi | |
52 } | |
53 | |
54 #We check the version of convert | |
55 CONVERT_VER=`convert --version | grep Version | grep -o "[0-9]\.[0-9]\.[0-9]"` | |
56 CONVERT_MAJOR=`echo $CONVERT_VER | cut -d . -f 1` | |
57 CONVERT_MINOR=`echo $CONVERT_VER | cut -d . -f 2` | |
58 CONVERT_REV=`echo $CONVERT_VER | cut -d . -f 3` | |
59 | |
60 if [ $CONVERT_MAJOR -lt 6 -o $CONVERT_MAJOR -eq 6 -a $CONVERT_MINOR -lt 6 ] | |
61 then | |
62 echo "ImageMagick convert must be at least version 6.6.0 (current: $CONVERT_VER)" | |
63 exit 1 | |
64 fi | |
65 | |
66 SYNTAXE="Split card image\nsyntaxe: $0 image_to_split.ext" | |
67 | |
68 if [ $# -ne 1 ] | |
69 then | |
70 echo $SYNTAXE | |
71 exit 1 | |
72 fi | |
73 | |
74 echo `file -b --mime-type $1` | grep image 2>&1 > /dev/null | |
75 | |
76 if [ $? -ne 0 ] | |
77 then | |
78 echo "target file is not an image" | |
79 exit 1 | |
80 fi | |
81 | |
82 current=`pwd` | |
83 #TODO: check directory presence | |
84 #echo "making directory" | |
85 if test -e $dest_dir | |
86 then | |
87 if test -n "`ls -A $dest_dir`" | |
88 then | |
89 echo "$dest_dir directory exists and is not empty !" | |
90 exit 1 | |
91 fi | |
92 else | |
93 mkdir $dest_dir | |
94 fi | |
95 echo "splitting cards" | |
96 convert Tarotcards.jpg -bordercolor black -crop 14x6@ -fuzz 50% -trim $dest_dir/card_%02d.png 2>/dev/null | |
97 cd $dest_dir | |
98 | |
99 #POST PROCESSING | |
100 | |
101 nb_files=`ls -A1 card*png | wc -l` | |
102 num=0 | |
103 idx=0 | |
104 max_w=0 | |
105 max_h=0 | |
106 deleted="" | |
107 for file in card*png | |
108 do | |
109 num=$((num+1)) | |
110 size=`stat -c%s $file` | |
111 width=`identify -format "%w" $file` | |
112 height=`identify -format "%h" $file` | |
113 | |
114 if [ $width -gt $max_w ] | |
115 then | |
116 max_w=$width | |
117 fi | |
118 | |
119 if [ $height -gt $max_h ] | |
120 then | |
121 max_h=$height | |
122 fi | |
123 | |
124 echo -n "post processing file [$file] ($num/$nb_files) | " | |
125 echo -n `echo "scale=2;$num/$nb_files*100" | bc`% | |
126 echo -n "\r" | |
127 | |
128 if test $size -lt 1000 | |
129 then #we delete empty files (areas without card on the initial picture) | |
130 deleted="$deleted$file\n" | |
131 rm -f $file | |
132 else | |
133 idx=$((idx+1)) | |
134 #We use transparency for the round corners | |
135 mogrify -fuzz 80% -fill none -draw "matte 0,0 floodfill" \ | |
136 -draw "matte $((width-1)),0 floodfill"\ | |
137 -draw "matte 0,$((height-1)) floodfill"\ | |
138 -draw "matte $((width-1)),$((height-1)) floodfill"\ | |
139 $file | |
140 #Time to rename the cards | |
141 mv "$file" "$(get_card_name $idx).png" | |
142 | |
143 fi | |
144 done | |
145 echo "\nEmpty files deleted:\n$deleted" | |
146 echo "\nBiggest size: ${max_w}X${max_h}" | |
147 cd "$current" | |
148 echo "DONE :)" |