Created
September 6, 2020 18:00
-
-
Save fangelion/a5dbfe7346a2cb71e4221049511fef4f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#скрипт для нарезки картинки на куски с разделителем "белая линия" | |
fname="$1" | |
tmp="tmp/" | |
delimeter="white" | |
check(){ | |
echo $1 | |
echo "$2" | |
for i in $2 | |
do | |
if [[ $i -eq $1 ]];then | |
echo true | |
fi | |
echo false | |
done | |
} | |
#получаем размеры исходной картинки | |
width=$(identify "$1" | cut -d " " -f3|cut -d "x" -f1) | |
height=$(identify "$1" | cut -d " " -f3|cut -d "x" -f2) | |
#echo $width"x"$height $(expr $height - 1 ) | |
#вытягиваем первую и последнюю строку изображения и находим белые разделители | |
cc1=$(convert "$fname" -crop "$width"x1+0+0 -monochrome txt:- |grep $delimeter |sed -n /[^,]*0/p|sed 's/\([^,]*\),.*/\1/') | |
h=$(expr $height - 1 ) | |
cc2=$(convert "$fname" -crop "$width"x1+0+$h -monochrome txt:- |grep $delimeter |sed -n /[^,]*0/p|sed 's/\([^,]*\),.*/\1/') | |
#присваиваем массивам точки разделителей | |
#echo "cc1=" ${cc1[@]} "cc2=" ${cc2[@]} | |
c=$cc2 | |
i=0 | |
for n in $c ;do | |
cc2[$i]=$n | |
i=$(expr $i + 1) | |
done | |
c=$cc1 | |
i=0 | |
for n in $c ;do | |
cc1[$i]=$n | |
i=$(expr $i + 1) | |
done | |
if [ -z ${cc1[0]} ];then | |
echo "В этом файле нет разделителей" | |
exit 1 | |
fi | |
#echo "cc1=" ${#cc1[@]} "cc2=" ${#cc2[@]} | |
#отбрасываем кривые разделители, оставляем только ровные и сводим в единый массив | |
if [[ ${#cc1[@]} -lt ${#cc2[@]} ]];then | |
count=${#cc1[@])} | |
else | |
count=${#cc2[@])} | |
fi | |
for ((i=0;i<=count;i++)) | |
do | |
#echo "check" ${cc2[@]} | |
e=`check ${cc1[$i]} "${cc2[@]}"` | |
echo $e | |
if [[ $e ]];then | |
c[$i]=${cc1[$i]} | |
fi | |
echo $i | |
done | |
#находим начала разделителей | |
count=${#c[@]} | |
#echo $count | |
n=1 | |
cc[0]=0 #это наша первая граница | |
for ((i=1;i<=count;i++)) | |
do | |
#echo ${c[$i]} | |
t=${c[$(expr $i - 1 )]} | |
#echo $t | |
#echo $(expr ${c[$i]} - $t) | |
if [[ $(expr ${c[$i]} - ${c[$(expr $i - 1)]}) -ne 1 ]];then | |
cc[$n]=${c[$(expr $i - 1)]} | |
n=$(expr $n +1) | |
cc[$n]=${c[$i]} | |
fi | |
done | |
cc[$(expr $n +1)]=$width #это наша последняя граница - ширина картинки | |
#если нет прямых разделителей, то говорим об этом | |
if [ -z ${cc[0]} ];then | |
echo "В этом файле нет прямых разделителей" | |
exit 1 | |
fi | |
first=$(echo $cc |cut -d " " -f1) | |
for i in $cc; do second=$i;done | |
#тут мы отделяем название от рысширения | |
if [[ ! -z $(expr match "$1" '.*/\(.*\)\.') ]];then | |
name=$(expr match "$1" '.*/\(.*\)\.') | |
ras=$(expr match "$1" '.*\.\(.*\)') | |
else | |
name=$(expr match "$1" '\(.*\)\.') | |
ras=$(expr match "$1" '.*\.\(.*\)') | |
fi | |
if [[ ! -e tmp ]]; then | |
mkdir tmp | |
else | |
if [[ ! -d tmp ]]; then | |
mkdir tmp1 | |
tmp="tmp1/" | |
fi | |
fi | |
#собсно производим саму нарезку | |
count=${#cc[@]} | |
for ((i=1;i<=count;i++)) | |
do | |
w=$(expr ${cc[$i]} - ${cc[$(expr $i - 1)]}) | |
d=${cc[$(expr $i - 1)]} | |
convert $fname -crop "$w"x0+"$d"+0 -trim +repage "$tmp"$name"_"$i"."$ras | |
done | |
#w=$first | |
#d=0 | |
#echo "$tmp"$name"_1."$ras | |
#convert $fname -crop "$w"x0+"$d"+0 -trim +repage "$tmp"$name"_1."$ras | |
#w=$(expr $second - $first) | |
#d=$first | |
#convert $fname -crop "$w"x0+"$d"+0 -trim +repage "$tmp"$name"_2."$ras | |
#w=$(expr $width - $second) | |
#d=$second | |
#convert $fname -crop "$w"x0+"$d"+0 -trim +repage "$tmp"$name"_3."$ras |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment