diff --git a/tools_for_authors/skriptiesim.sh b/tools_for_authors/skriptiesim.sh new file mode 100644 index 0000000000000000000000000000000000000000..9c39089194bffe770294c6580f7076ca15ccfec4 --- /dev/null +++ b/tools_for_authors/skriptiesim.sh @@ -0,0 +1,136 @@ +#!/bin/sh +# +# Yksinkertainen esimerkkikomentojonotiedosto bash-kuorelle. +# +# Käyttää työkaluohjelmia kurssilogon tekemiseksi. Demonstroi +# muun muass seuraavia asioita: +# +# - perus-"eräajo" +# - yksinkertainen bash-skripti (ei muuttujia kummempia rakenteita) +# - unix-tiedostojärjestelmä, laitehakemisto /dev/ +# - datan putkittaminen prosessilta toiselle '|' +# - tiedoston ohjaaminen syötteeksi prosessille '<' +# - vasteen ohjaaminen tiedostoksi (overwrite) '>' +# - muutamia apuohjelmia (isoja ja pieniä; perinteisiä ja erikoisempia) +# - jonkun satunnaisen päivän tarpeeseen tehty kokoelma one-linereita +# +# Ei tässä ehkä tähän tarkoitukseen mitään järkeä ole, mutta hiton +# hauska oli väsäillä :-). +# +# Grafiikkaa lienee useimmiten kätevintä tehdä hiirellä klikkailemalla +# ikkunoissa, mutta täytyy ymmärtää, että se on mahdollista myös +# muulla tavoin... Entäs, jos tällainen jostain syystä pitäisi tehdä +# tuhannelle eri taustakuvalle joka päivä kello 18:00. Kuka palkataan +# klikkailemaan, vai tehdäänkö sittenkin skripti?! +# +# Joskus halutaan automaattista tietojenkäsittelyä (ATK) ahkeran +# tyypin klikkailun (ATK) sijasta. + +# Otettaisko kumminkin yksi argumentti... jo vuonna 2016(?). +# Ja fiksataan loppu skripti sen mukaisesti vuonna 2020(?) +# Ja napataan komentojonotiedosto versionhallintaan kurssimateriaalin osaksi 2025 + +if [ $# -lt 1 ] +then + echo "Usage: $0 IMAGE" + echo "Taustakuvan IMAGE kuvasuhteeksi oletetaan noin 2x1 eli pitkulainen vaakakuva." + exit 1 +else + BGSRCIMG="$1" +fi + +# Gamma-korjauksen parametria voi säädellä tästä (pittäis olla argumentti muiden joukossa): +GAMMAVALUE=3 + + +# ----------- Ensin tehdään logokuva vaiheittain. + +# Bitsinnypläyskurssin logoon tarvitaan satunnaisia ykkösiä ja nollia! +# +# Unix-tiedostojärjestelmästä päästään käsiksi "tiedostoon" nimeltä +# /dev/urandom josta voidaan lukea ääretön määrä satunnaisia +# tavuja. Ryhdytään lukemaan laitteelta ja putkitetaan se +# apuohjelmille. Viimeinen lakkaa ottamasta vastaan, kun se on saanut +# 35 riviä dataa. Se mitä menee läpi, ohjataan tekstitiedostoon: + +dd if=/dev/urandom | od -An -t x1 | fold -w 3 | \ + awk '/[0-7][:alnum:]/ {printf "0" } /[89a-f][:alnum:]/ {printf "1"}' | \ + fold -w 128 | head -35 > rndbits.txt + +# Sen jälkeen käytellään ImageMagick -ohjelmistopaketin palveluita +# komentoriviltä. Muodostetaan väliaikaisia kuvia ja koostetaan niistä +# lopullinen. + +# Ensiksi satunnaiset bitit PNG-kuvaksi: +convert -size 600x360 xc:white -font "Liberation-Mono" \ + -pointsize 12 -fill black -annotate +0+0 "@rndbits.txt" bits.png + +# Fontit on kyl aikamoinen murheenkryyni.. mikä ny sitte olis ja pysyis.. +# /usr/share/texlive/texmf-dist/fonts/type1/adobe/courier/pcrb8a.pfb +# /usr/share/texlive/texmf-dist/fonts/type1/urw/avantgar/uagd8a.pfb +convert -size 600x200 xc:white -fill black \ + -gravity center -font /usr/share/texlive/texmf-dist/fonts/type1/adobe/utopia/putb8a.pfb \ + -pointsize 125 -draw "text 0,-48 'ITKA2030'" \ + -pointsize 50 -draw "text 0,48 '-Käyttikset ynnä muuta-'" \ + +matte \ + textmask.png + +#convert -compose Copy_Opacity \ +convert \ + \( bits.png -colorize 55% -swirl 13 \) \ + \( textmask.png \) \ + -compose CopyOpacity \ + -composite \ + finalmask.png + +convert \ + \( \ + -size 600x200 \ + plasma:blue-navy \ + \( xc:white finalmask.png -compose Over -composite -negate \) \ + -compose Copy_Opacity -composite \ + \) \ + kurssilogo_eivarjoa.png + + +# Varjostus olis niinku tosi kiva juttu: + +convert \ + kurssilogo_eivarjoa.png \ + \( +clone -background purple -shadow 20x1.5+4+6 \) +swap \ + -background none -mosaic \ + \ + kurssilogo.png + + +# ------------ Sitten yhdistetään edellä tehty logo taustakuvaan. + +# Taustakuvan esikäsittely: + +convert $BGSRCIMG -gamma $GAMMAVALUE -resize 740 -fill 'rgb(220,220,255)' -colorize 50% tmp.png + +# Gradienttivaalennus: + +convert -size 400x680 radial-gradient:black-grey -rotate 90 gradientti.png + +convert tmp.png \ + gradientti.png \ + -compose overlay \ + -composite taustakuva.jpg + +# Yhdistäminen varjostettuun logoon: + +convert -size 1024x302 xc:white \ + taustakuva.jpg -geometry +370+0 -composite \ + kurssilogo.png -geometry +27+27 -composite \ + -blur 0.22x0.33 -quality 88 -interlace Plane \ + otsikkorantu.jpg + + +# ------------- siinäpä se. + +# Lopussa voitaisiin poistaa väliaikaiset tiedostot, mutta jätetään ne nyt... +# Oikeasti tehtäisiin väliaikainen hakemisto /tmp/:n alle ylipäätään. +# Siinä omat kommervenkkinsä saada kuntoon. Ehkä jonakin vuonna... +# +# rm textmask.png finalmask.png tmp.png