#!/bin/bash



# Tarkistuksia ja huomautuksia
[ -z $(which zip)  ] && echo "Huom.! zip tukea ei ole asennettu!"
[ -z $(which rar)  ] && echo "Huom.! rar tukea ei ole asennettu!"
# Lopetetaan heti jos imagemagickia ei ole asennettuna.
[ -z $(which convert)  ] && echo "imagemagick ei ole asennettuna! Lopetetaan..." && exit 0


# Oletusasetukset
POLKU="pienennetyt"
KOKO=800
LAATU=80
pakettiNimi="alkuperaiset_kuvat"
paketti=ei
muuta_asetuksia=ei



# [ $maara -eq 0 ] && echo "Yhtään kuvaa ei löytynyt hakemistosta $PWD" && exit 0

# echo
# echo "Kuvia valittiin $maara kappaletta."
# echo 



echo "Asetukset:  Hakemisto: ./"$POLKU" Koko: "$KOKO"px Laatu: "$LAATU"/100 Paketti: $paketti"
echo "Haluatko muuttaa asetuksia? Oletus: Ei"
read -p "(k/e): " muuta_asetuksia
if [ "$muuta_asetuksia" = "k" ]; then
	
	echo "Mihin hakemistoon kuvat tallennetaan? Oletus: $POLKU ($PWD/$POLKU/)"
	echo "Hakemisto luodaan jos sitä ei ole."
	read -p "(hakemisto): " uusiPOLKU
 	[ -n "$uusiPOLKU" ] && POLKU=$uusiPOLKU
	
	echo "Kuvien suurimman sivun pituus pikseleissä? Oletus: $KOKO"
	read -p "(kokonaisluku): " uusiKOKO
 	[ -n "$uusiKOKO" ] && KOKO=$uusiKOKO
	
	echo "JPG-pakkauksen taso? Oletus: $LAATU"
	read -p "(1-100): " uusiLAATU
 	[ -n "$uusiLAATU" ] && LAATU=$uusiLAATU
	
	
	echo "Poistetaanko tiedoston nimistä ääkköset, kapitaalit ja välit? Oletus: Kyllä"
	read -p "(k/e): " trimmaus
	trimmaus="$(echo $trimmaus | tr '[:upper:]' '[:lower:]' )"
	
	
	echo "Paketoidaanko alkuperäiset kuvat? Oletus: Ei"
	read -p "(zip/rar/tar): " paketti
	paketti="$(echo $paketti | tr '[:upper:]' '[:lower:]' )"
fi

echo
read -p "Paina mitä tahansa nappia aloittaaksesi. Peru Ctrl+c"
echo

# jos kuvahakemistoa ei ole niin luodaan sellainen
if [ ! -d "$POLKU" ]; then
	echo "luodaan hakemisto $POLKU"
	echo
	mkdir -p -m 777 $POLKU
fi




# Lähdetään käymään kuvia läpi
kutistakuva(){
	# Vain jos tiedosto on olessa.
	[ ! -f "$kuva" ] && break
	

	# Tehdään kuvista "webbikelpoisempia". 
	if [[ ($trimmaus != "e" && $trimmaus != "ei" && $trimmaus != "n" && $trimmaus != "no") || -z $trimmaus ]]; then
		uusiNimi="$(echo "$kuva"  | tr '[:upper:]' '[:lower:]')"
		uusiNimi="$(echo "$uusiNimi" |  sed 's/ä/a/g' |  sed 's/ö/o/g' |  sed 's/Ä/a/g' |  sed 's/Ö/a/g' |  sed 's/ /_/g')"
	else uusiNimi=$kuva
	fi


	# Kaivetaan kuvien koot esiin
	leveys=$(identify -format "%w" "$kuva")
	korkeus=$(identify -format "%h" "$kuva")

	# Katsotaan kumpi on suurempi: Leveys vai korkeus
	if [ "$leveys" -gt "$korkeus" ]; then 
		suurempi=$leveys
	else
		suurempi=$korkeus
	fi


	
	if [ $suurempi -gt $KOKO ]; then
 		echo "konvertoi kuvaa $kuva ..."
		# Asetetaan pääte jpg:ski muita formaatteja varten
	 	uusiNimi="${uusiNimi%.*}.jpg"
		if [ "$leveys" -gt "$korkeus" ]; then
			# Kutistetaan leveyden mukaan
			convert -size "$KOKO"x "$kuva" -format jpg -resize "$KOKO"x -quality $LAATU "$POLKU/$uusiNimi"
		else
			# Kutistetaan korkeuden mukaan
			convert -size x"$KOKO" "$kuva" -format jpg -resize x"$KOKO" -quality $LAATU "$POLKU/$uusiNimi"
		fi
	else
		# Kopioidaan vain kuva, jos se on jo tarpeeksi pieni
		echo "$kuva on jo valmiiksi tarpeeksi pieni - vain kopiointi"
		cp $kuva "$POLKU/$uusiNimi"
	fi

	edellinen="	--> Tallennettu $POLKU/$uusiNimi"
	echo "$edellinen"
	echo
}



maara=0
for z in $@; do [ -e "$z" ] && let "maara += 1"; done
if [ $maara = 0 ]; then 
#	konvertoitavat kuvat valitaan niiden päätteiden mukaan ellei niitä ole käsin valittu
	for kuva in *.jpg *.JPG *.jpeg *.JPEG *.png *.gif *.tiff *.bmp; do kutistakuva "$kuvat"; done
else
	for kuva in "$@"; do kutistakuva "$kuva"; done
fi


# Laitetaan kuvat pakettiin, jos jokin näistä matchaa
case $paketti in
   tar|y|yes|k|kyllä) tar -cvvf $POLKU/$pakettiNimi".tar" $KUVAT ;;
   rar|RAR) rar a -m0 "$POLKU/$pakettiNimi" $KUVAT ;;
   zip|ZIP) zip -0 "$POLKU/$pakettiNimi" $KUVAT ;;
esac




echo "Valmis!"
exit 0