Skip to content
Snippets Groups Projects
Commit 1b1b93f8 authored by nieminen's avatar nieminen
Browse files

Kurssilogoskriptin ikuinen raakile mukaan materiaalivarastoon.

parent 5e23f91c
No related branches found
No related tags found
No related merge requests found
#!/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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment