Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/bash
- dane_globalne(){
- TMP_DIR=".`basename ${0}`_tmp"
- }
- sprzataj_tmp(){
- [[ -d "${TMP_DIR}" ]] && rm -fr "${TMP_DIR}"
- }
- tworz_tmp(){
- sprzataj_tmp
- mkdir "${TMP_DIR}"
- }
- generuj-png(){
- pkg=("find" "sed" "printf" "pngquant" "convert")
- apt=("find" "sed" "printf" "pngquant" "imagemagick")
- brak_pkg=""; brak_apt=""
- for (( i=0; i<${#pkg[@]}; i++ )); do
- command -v "${pkg[$i]}" &>/dev/null || {
- brak_pkg="${brak_pkg}${pkg[$i]} "
- brak_apt="${brak_apt}${apt[$i]} "
- }
- done
- [[ ! -z "${brak_pkg}" ]] && {
- echo -e "[BŁĄD]: brak wymaganych pakietów:\n$brak_pkg\n\nAby zainstalować wpisz:\nsudo apt install ${brak_apt}\n"
- return 1
- }
- case "$1" in
- "" | "--help") echo -e "\nUżycie: `basename $0` [procent_powiększenia] [nagłówek]\n\nGdzie:\n[procent_powiększenia] musi być liczbą z przedziału: 100-1000\n\nPrzykład:\n`basename $0` 500 \"tekst nagłówka\"\n" ; return 1 ;;
- esac
- [[ ! "$1" =~ ^[1-9][0-9]+$ ]] || [[ "$1" -lt 100 ]] || [[ "$1" -gt 1000 ]] && {
- echo -e "\n[BŁĄD]: parametr [procent_powiększenia] musi być liczbą z przedziału: 100-1000.\n"
- return 1
- }
- [[ -z "$2" ]] && {
- echo -e "\n[BŁĄD]: brak nazwy nagłówka.\n"
- return 1
- }
- max_plikow=100; krok=1; max_krokow=6
- echo -en "[$(( krok++ ))/${max_krokow}]: Sprawdzam ilość plików .bmp ... "
- ilosc_plikow=`find . -type f -iregex "^\.\/[a-z0-9]+_.+\.bmp$" -regextype grep | wc -l`
- echo "[${ilosc_plikow}] "
- [[ "${ilosc_plikow}" -eq 0 ]] && {
- echo -e "\n[BŁĄD]: w bieżącym katalogu brak plików w odpowiednim formacie: \"id_nazwa.ext\".\n\nPrzykład:\n1_plik1.bmp\na_plik1.BMP\nA_plik1.BMP\n"
- return 1
- }
- [[ "${ilosc_plikow}" -gt "${max_plikow}" ]] && {
- echo -e "\n[BŁĄD]: dopuszczalna liczba plików do przetworzenia wynosi: ${max_plikow}, w katalogu znajduje się: ${ilosc_plikow}\n"
- return 1
- }
- tworz_tmp
- licz=1; plik=""; IFS=$'\n'
- for i in `find . -type f -iregex "^\.\/[a-z0-9]+_.+\.bmp$" -regextype grep | sort -V`; do
- plik="${i:2}"; plik="${plik#*_}"; plik="${plik%.*}"
- convert "${i}" -sample "${1}%" -weight "bold" -style "italic" -background "#0a8900" -fill "white" -pointsize "$(( ${1}/6 ))" label:"${plik}:" -gravity "north" +swap -append "${TMP_DIR}/`printf %05d ${licz}`.png" || {
- echo -e "\n[BŁĄD]: Nie można przetworzyć pliku: ${i}"
- return 1
- }
- echo -en "\r[${krok}/${max_krokow}]: Przetwarzam pliki .bmp ... [${licz}/${ilosc_plikow}] "
- (( licz++ ))
- done
- (( krok++ ))
- plik_png="$(sed -r 's/[^[A-Za-z0-9ąćęłńóśżź\.\(\)]]*/_/g; s/[_]+/_/g; s/^_|_$//g' <<< ${2}).png"
- echo -en "\n[$(( krok++ ))/${max_krokow}]: Łączę pliki .png ... "
- montage "${TMP_DIR}/*.png" -geometry "+10+0" -background "black" -set label "" "${TMP_DIR}/${plik_png}" &>/dev/null || {
- echo -e "\n[BŁĄD]: Nie można połączyć plików (brak pamięci)."
- return 1
- }
- echo -en "\n[$(( krok++ ))/${max_krokow}]: Nadaję główną etykietę ... "
- convert "${TMP_DIR}/${plik_png}" -weight "bold" -style "italic" -background "black" -fill "#259cee" -pointsize "$(( ${1}/4 ))" label:"${2}" -gravity "north" +swap -append "${TMP_DIR}/${plik_png}" &>/dev/null || {
- echo -e "\n[BŁĄD]: Nie można nadać etykiety (brak pamięci)."
- return 1
- }
- echo -en "\n[$(( krok++ ))/${max_krokow}]: Kompresuję ... "
- pngquant --force --strip --speed 1 --ext ".png" "${TMP_DIR}/${plik_png}" &>/dev/null || {
- echo -e "\n[BŁĄD]: Nie można skompresować pliku .png (brak pamięci)."
- return 1
- }
- mv -f "${TMP_DIR}/${plik_png}" "${plik_png}"
- echo -e "\n[$(( krok++ ))/${max_krokow}]: Gotowe, plik \"${plik_png}\" utworzony."
- }
- dane_globalne
- generuj-png "${1}" "${2}"
- sprzataj_tmp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement