Pääsivulle
| TIETOTEKNIIKAN PÄÄSIVULLE
Albumi-sovellus
YLEISTÄ
Tämä on monipuolinen SQLite-tietokantasovellus valokuva- ja
videoklippiarkiston hoitamiseen. Valokuvia ja videoklippejä
säilytetään tavallisessa kansiorakenteessa kiintolevyllä, ja
valokuvaa selittävät tiedot ovat tietokannassa. Olen tehnyt
sovelluksen itse ja koko ajan siihen on vireillä parannuksia. Tällä
hetkellä valokuva-arkistossani on noin 15 000 valokuvaa ja
videoklippiä, ja niitä koskevien tietojen ylläpidossa riittää
loputtomasti puuhaa.
Seuraavassa on luettelo sovelluksen tärkeimmistä ominaisuuksista:
- monipuoliset hakuominaisuudet
- hakutulos saadaan pikkukuvina ja tietoluettelona
- hakutuloksesta voidaan valita kuvan katselu ja lähempien
tietojen katselu ja edelleen muokkaus
- kuvasta voidaan antaa mm. seuraavanlaisia tietoja: päivämäärä,
paikkakunta, sisäkuvan ottopaikka esim. "Helkan koti", laatu,
kuvan aihe, kuvan henkilöt
- kuvasta voi tallentaa myös paikkakoordinaatit ja painikkeesta
tulee kartta esille
- henkilöistä voi tallentaa perustietoja ja kuvan
- vaatimuksena on joku seuraavista: Windows 7, Windows 8.1,
Windows 10 tai macOS
Sovellus on muutoin kokonaan itse tekemäni, mutta se hyödyntää
eräältä kohdin LGPL-lisensioitua ffmpeg-sovellusta.
Mac-ympäristön sovellus on toki aivan erillinen
Windows-sovelluksesta, mutta sama tietokantatiedosto on käytössä
molemmissa.
Teknistä perustietoa
Itse kuvat ovat tavanomaisessa kansiorakenteessa, eli niitä ei ole
viety tietokannan tauluihin. Tietokantaan on viety vain kuvien
thumbnailit hakutulosten kuvamatriisinäkymää varten.
Kansiorakenteessa kuvaa voi korjata, ja sovellus päivittää
thumbnailin automaattisesti, kun kuvaa seuraavan kerran
sovelluksessa katsotaan tai käsitellään.
Sovellus tukee seuraavia kuvatiedostoja: jpg, jpeg, gif, tif, tiff,
png. Saat vaihtaa kuvan toisentyyppiseen kansiorakenteessa ilman,
että kerrot sitä sovellukselle. Sovellus osaa toimia tilanteessa.
Sovellus tukee seuraavia videoklippitiedostoja: wmv, avi, mpg, mpeg,
mov, mp4. Se tukee mitä hyvänsä videotiedostoa minkä työasema voi
avata, mutta em. tyypit on koodattu ohjelmaan sisään kun tutkitaan
onko kyseessä video- vai kuvatiedosto. Myös flv on tuettuna, mutta
kaikki soitto-ohjelmat eivät sitä tue (määrittele käyttösi
tarvittaessa sellainen joka tukee).
Sovellusta ylläpidetään Windowsissa työkalulla Visual Community
2019, jolla tehdään 32-bittinen koodi. Se toimii sekä 32- että
64-bittisessä käyttöjärjestelmässä. Ajokelpoinen sovellus koostuu
yhdestä exe-tiedostosta minkä voi laittaa minne hyvänsä, esimerkiksi
kansioon C:\Albumi. Lisäksi sinne tarvitaan ini-tiedosto, SQLite:n
dll-kirjasto ja jokunen muu dll-kirjasto. Mac-ympäristön sovellus on
tehty työkalulla Xcode, ja ympäristön nykyiset (26.6.2019) versiot
ovat Xcode 10.2.1 ja macOS 10.14.5.
Tietokannan eheyttä varmistava periaate ohjelmoinnissa: kun on tehty
muutos kantaan, niin sovellus hakee aina muutetun tiedon kannasta
näytölle (esimerkiksi kaikki Kuvan tiedot) ilman käyttäjän eri
toimenpidettä, jolloin käyttäjä heti näkee onko asiat kunnossa.
Windowsissa minulla on kehitysympäristö sekä 32-bittisessä että
64-bittisessä Windowsissa (W8.1 ja W10). Exe-tiedostojen käytössä
ristiin ei ole ongelmia. Lisäksi multiboot-koneessani kaksi
käyttöjärjestelmää käyttää samaa projektikansiostoa. Kehityskoneissa
on asennettuna dotnet Framework 4.6.1 tai uudempi ja SQLite-paketti
sqlite-netFx46-binary-Win32-2015-1.0.109.0.zip purettuna
projektikansiostoon kansioksi Externals_109. Ohjelmointikieli on C#.
Sovellus on tehty WPF-käyttöliittymällä.
Loppukäyttäjän koneessa on oltava oikeat versiot dotnet Framework ja
System.Data.SQLite.dll, lisäksi muutamia muita dll:iä
kehitysympäristöstä:
- XP SP 3: Albumi5.exe, dotnet Framework 4.0 tai uudempi,
System.Data.SQLite.dll versio 1.0.105.0
- W8.1 ja W10: Albumi8.exe, dotnet Framework 4.6.1 tai uudempi,
System.Data.SQLite.dll versio 1.0.109.0
Mac-ympäristössä on jo macOS:n kautta mukana kaikki tarpeellinen,
myös SQLite on osa käyttöjärjestelmää.
TAULURAKENNE
Tässä ovat keskeiset taulut ja niiden yhteydet. Kaaviokuva on
yksinkertaistettu esitys tauluista ja niiden suhteista:
Suurempi
kuva
Kuvat: tiedot kustakin yksittäisestä kuvasta
Bitmapit: kuvan thumbnail ja sen tallennuspvm
Kuvanhlot: keitä henkilöitä kuvassa on
Albumit: kuvaryhmän aihepiiri
Ulkolajit: mikä ulkotila kyseessä, esimerkiksi kotipiha tai Lassen
mökin piha
Ulkokoord: ulkotilan koordinaatit (puuttuu kuvasta)
Sisalajit: mikä sisätila kyseessä, esimerkiksi Olarin koti
Henkilot: tietoja henkilöstä
HenkAlbt: missä albumeissa kukin henkilö voi esiintyä
SisAlbt: missä albumeissa kukin sisätila voi esiintyä
Vakiot: kuvien laadun ja tärkeyden vakiot
Sovelluksen tarvitsemat tiedot
Sovellus (exe tai app) käyttää seuraavia tietoja. Oletuksena ne ovat
Windowsissa samassa kansiossa itse sovelluksen (exe) kanssa, kun
taas minulla Macissä app on kansiossa Ohjelmat/Albumi ja allaolevat
tiedostot kansiossa /Users/[minä]/Pictures/Albumi.
Kansiot, jossa on hallittavat valokuvat
Tietokantatiedosto Albumi5.db
Tietokantatiedoston testiversio Albumi5_testi.db
Naamakansio, jossa on henkilöiden naamakuvat, kansion nimi
Naamakuvat
Kansio JAVA, jossa on karttojen näyttämiseen tarkoitetut
javascript-koodit
Videon thumbnail-kuva, jos sovellus ei onnistu tekemään sitä
videosta: videonull.jpg
Sovelluksen perusnäytön taustakuva tuotantokannalle: Latauskuva.jpg
Sovelluksen perusnäytön taustakuva testikannalle:
Latauskuva_testi.jpg
Sovellus ffmpeg.exe (Macissä ffmpeg), jota tarvitaan videoklippien
käsittelyssä
Eräitä dll-kirjastoja Windows-koneessa
Macissä sovellus mpv.app, jolla esitetään videoklipit
ini-TIEDOSTO
Sovelluksen (app tai exe) kanssa samaan kansioon tulee sijoittaa
tiedosto Albumi8.ini, Albumi5.ini tai AlbumiMac.ini, joka kertoo
sovelluksen tarvitsemat keskeiset asiat. Sovellus ei kirjoita siihen
mitään.
Tiedostossa kuvataan mistä mikin löytyy ja lisäksi tiettyjä
oikeuksia. Tässä perusmalli Windows-ympäristöstä, selitykset
perässä. Tiedostossa on pakko olla kaikki nämä rivit. Myös on
mahdollista tehdä mutkikkaampi ini-tiedosto, joka määrittelee useita
erillisiä tietokantoja (esimerkiksi oman perheen kuvat, työkuvat).
kuvapolku# C:\Albumi
sqlitekanta# C:\Albumi\Albumi5.db
sqlitetestikanta# C:\Albumi\Albumi5_testi.db
javapolku# C:\Albumi\JAVA
kuvapois# Ei
muokkaa# Joo
naamat# C:\Albumi\Naamakuvat
videonull# C:\Albumi\videonull.jpg
videosofta# /Users/[minä]/Pictures/ALBUMI/mpv.app/Contents/MacOS/mpv
latauskuva# C:\Albumi\alkukuva.jpg
latauskuva_test# C:\Albumi\testialkukuva.jpg
ffmpeg# C:\Albumi\ffmpeg.exe
kuvapolku# kertoo minkä kansion alla on kaikki kuvat ja
videoklipit alikansioinaan
Jos kuvapolku on juurikansiossa, pitää olla esimerkiksi:
kuvapolku# E:\
sqlitekanta# kertoo missä sijaitsee albumin tuotantokanta
ja mikä sen nimi on
sqlitetestikanta# kertoo missä sijaitsee albumin testikanta
ja mikä sen nimi on
kuvapois# kertoo saako käyttäjä poistaa kannasta kuvia,
arvo on Joo tai Ei (poistettaessa poistuu vain tieto tietokannasta,
ja itse kuva pitää poistaa erikseen resurssinhallinnasta niin että
sovellus on suljettu)
muokkaa# kertoo saako käyttäjä muokata tietokantaa, arvo on
Joo tai Ei. Jos arvo on Ei, niin esimerkiksi Muokkaa- painikkeita ei
ole ollenkaan
naamat# kertoo kansion minne tallennetaan albumissa
esiintyvien henkilöiden kasvokuvat
videonull# kertoo videon oletusesikatselukuvan sijainnin ja
nimen (tulee käyttöön jos esikatselukuvan otto videosta ei onnistu)
videosofta#
kertoo mikä sovellus avaa videotiedoston. Tämä on käytössä ja
pakollinen tieto Macissä, mutta ei tarvita Windowsissa. Windowsissa
video avataan käyttöjärjestelmän oletussovelluksella
latauskuva# kertoo alun menunäytön kuvan sijainnin ja
nimen. Koon oltava leveys x korkeus = 685x534
latauskuva_test# kertoo testikannan menunäytön kuvan kuten
edellä
ffmpeg# kertoo
missä apuohjelma ffmpeg.exe sijaitsee ja sen nimen (Mac:
/usr/local/ffmpeg)
Videoleikkeet
Videoleikkeiden katsomiseen käytetään Windowsissa
kirjastosovelluspakettia MediaElement ja Macissä sovellusta mpv.app.
Videoleikkeistä tarvitaan hakutuloksiin ja metatiedon
katselunäyttöihin yksittäinen kuva. Se otetaan videoleikkeen alusta
kolmen sekunnin päästä. Siihen käytetään sovellusta
ffmpeg.exe. Katso koodiesimerkki
Karttanäytöt
Sovellus tallentaa kuvien ottopaikan koordinaatit ja näyttää
ottopaikan sijainnin OpenMap-kartalla (katso koodiesimerkki ) tai
käyttäjän valinnan mukaan Maanmittauslaitoksen maastokartalla (jos
kuva otettu Suomesta). OpenMap-kartat ovat selkeitä asutuilla
seuduilla, mutta maastokartat ovat ylivoimaisia teiden ulkopuolella.
Historiaa
Vuodet 2000 - 2006 käytin sovellusta Photoimpact Album valokuvien ja
niiden metatietojen ylläpitoon. Vuonna 2006 totesin, että sovellus
ei toimi Vistassa enkä halunnut ostaa uutta sovellusversiota, koska
en ollut kaikilta osin tyytyväinen Photoimpactin toimintoihin. Aloin
tehdä omaa sovellusta keväällä 2006. PhotoImpactista sai metatiedot
ulos tekstimuodossa, ja toin ne Accessiin, muokkasin taulurakenteen
Accessissa ja ohjelmoin oman sovelluksen Visual C# 2005 Expressissä.
Myöhemmin vuonna 2008 käytössä oli tietokanta SQL Server 2008
Express, mutta se oli turhan hankala, koska halusin että voin jakaa
sovellusta lapsillemme. Niinpä pian otin käyttöön SQL Server
Compact:in, jota käytin vuoteen 2014 asti, jolloin tietokannaksi
tuli SQLite.
Vuosien kuluessa sovellus on monipuolistunut ja bugeista on päästy
hyvin eroon. Viime aikoina olen keskittynyt sovelluksen nopeuden
kasvattamiseen, koska suurin tietokantani sisältää jo noin 13 000
kuvaa, ja esimerkiksi haku on voinut olla aikaa vievä.
SOVELLUKSEN OMINAISUUKSIA JA NÄYTTÖJÄ
Sovelluksen keskeiset toiminnallisuudet ovat monipuolinen haku ja
luonteva uusien kuvien tuonti.
Tässä joukko sovelluksen näyttöjä Mac-versiosta:
Hakuehtojen antaminen; hakutulokset tulevat välilehtiin Pikkukuvat
ja Tietorivit. Vaaleanvihreällä pohjalla on ruksattavana eri
henkilöt:

Alla näkyvät tarkemmin hakuehdot:

Hakutulosten katsominen:
Uusien kuvien tuonnin näyttö. Yläreunan toiminnallisuudet etenevät
vasemmalta oikealle:
Kun uusia kuvia on tuotu, niin niille mennään antamaan metatiedot.
Uudet kuvat löytyvät hakunäytön kautta. Tässä uusien tietojen
antamisen näyttö:

Kuvan kaikkien tietojen tarkasteluun on oma näyttö:
Käyttöliittymästä pääsee myös hallinnoimaan henkilöiden tietoja ja
monia muita perusasioita.
Tässä valikko hallinnoitaville asioille:
Henkilöiden tietoja hallitaan tällaisella näytöllä:
Lisäksi sovelluksesta saa ulos lukumäärätietoja kuvista,
paikkakunnista, henkilöistä ym.
Sovellus tietokantoineen on helppo siirtää toiseen työasemaan tai
varmistusta varten ulkoiselle kiintolevylle. Jos ini-tiedosto on
käytössä, sitä pitää päivittää vastaamaan uutta ympäristöä.
-------------------------------
(sivua muokattu 29.12.2019)