Digitális képek, képállományok

Digitális képállományok

Foglalkozzunk most a képállományokkal. Érdemes kétfajta képállományt megkülönbözetnünk. A bittérképes (vagy pontraszteres) képállományok egy képet különböző színű képpontokból építik fel. Például egy digitális kamera vagy fényképezőgép így állítja elő a képet. A vektorgrafikus képállományok a képeket geometriai alakzatokból építik fel, és ezek jellemzőit tárolják. A vektorgrafikus állományok előnye a kis fájlméret és a tetszőleges mértékű (torzításmentes) nagyítás, ill. kicsinyítés. Rendszerint ilyen típusú állományokat használnak például a számítógépes tervezés (CAD) során vagy az ún. TrueType betűtípusok esetében. Az általános iskolai oktatásban ilyen képeket tudunk előállítani például az Imagine Logo segítségével (bár a rajz elmentése már bittérképes formában történik). A továbbiakban foglalkozzunk a bittérképes képállományokkal.

A bittérképes állományok egyik előnye az, hogy lényegében bármilyen képet megjeleníthetünk a segítségükkel; egyik hátrányuk pedig, hogy felnagyítva őket egy bizonyos méret mellett már meg tudjuk különböztetni az egyes képpontokat (ez az ún. "pixelizálódás" jelensége).

Például hasonlítsuk össze az eredetileg 100x100 méretű és az 500x500, ill. 1000x1000 méretűre nagyított alábbi képeket (különös tekintettel az emotikon fekete széleire):
Smiley 100x100 méretben Smiley 500x500 méretben Smiley 1000x1000 méretben Smiley széle 3x nagyításban
Az IrfanView képnézegető (és képszerkesztő) program telepítés után egy kiegészítő (plugin) segítségével lehetővé teszi, hogy ezt a hatást közvetlenül is előállítsuk:
egy barackvirág képe egy barackvirág pixelizált képe

A bittérképes képállományok legfontosabb jellemzői:

(a) A sor- és oszlopfelbontás megadja a kép soraiban, ill. oszlopaiban levő képpontok számát (azaz a kép szélességét és magasságát képpontokban mérve). Például egy 1024x768 felbontású digitális kép képpontjai vagy pixelei egy olyan koordinátarendszerben adhatóak meg, amelynek a vízszintes (x) tengelyén 1024 pontot, függőleges (y) tengelyén pedig 768 pontot jelölünk ki (a koordinátarendszer origója rendszerint a kép bal felső sarkában van, az x tengely jobbra, az y tengely pedig lefelé mutat). A sor- és oszlopfelbontás szorzata a digitális kép képpontjainak vagy pixeleinek a számát adja meg (az előző példában ez 1024*768 = 786432 pixel).

(b) A színmélység megadja, hogy az egyes képpontokhoz tartozó színeket hány biten tároljuk. Például
– 8 bit esetén max. 28 = 256 különböző színt használhatunk (mint pl. gif típusú képfájlok esetében, ahol egy ún. színpaletta tartalmazza a képben használt színeket);
– 24 bit esetén pedig max. 224 = 16777216, azaz több, mint 16.7 millió színt használhatunk a képben; ez az ún. true color színmélység (ez pl. jpg típusú képfájlok esetében fordul elő).

A képfelbontás és a színmélység alapján kiszámíthatjuk, hogy egy tömörítetlen képfájlban mennyi információt tárolunk (technikailag ez a fájl méretét jelenti). Például egy 1024x768 felbontású és 24 bit színmélységű tömörítetlen digitális kép képpontjainak színét 1024*768*24 bit = 18874368 bit ≅ 18 MBájt mennyiségű információval adhatjuk meg.

Az emberi szem által érzékelhető, ún. látható spektrum a teljes elektromágneses színtartománynak csak egy töredéke:
a látható színtartomány a teljes elektromágneses spektrumon belül

A fenti ábra mutatja, hogy szemünk a kb. 400 - 700 nm hullámhosszú elektromágneses sugárzásokat érzékeli színeknek. A legkisebb hullámhosszú és legnagyobb frekvenciájú, ill. energiájú fény az ibolya, a legnagyobb hullámhosszú pedig a vörös; az "ibolyán túl" (<400 nm) az ultraibolya (vagy ultraviola, UV) sugárzás tartománya, a "vörösön innen" (>700 nm) pedig az infravörös tartomány (IR) következik. A látható fényspektrum színei:
a szemünk által látható színek

Az ún. standard RGB modell alapszínei nem szerepelnek a tiszta spektrumszínek között (nem teljesen telítettek), azonban közelítőleg meg tudjuk adni azt az ún. ún. "domináns" hullámhosszt, amely a hozzájuk legközelebb álló spektrumszínhez tartozik:
– a vörös (R; Hue=0 vagy H=0°) szín hullámhossza 609‐614 nm közötti érték;
– a zöld (G; H=0.3333 vagy H=120°) esetében ez közelítőleg 549 nm;
– a kék (B; H=0.6667 vagy H=240°) esetében pedig 466‐436 nm közötti érték.

Az International Commission on Illumination szabványos színmodellje, az ún. CIE XYZ színmodell szerint az emberi szem által látható színeket ábrázolhatjuk egy kétdimenziós síkon (ez az ún. "színpatkó" diagram).

a CIE XYZ színmodell színei a CIE XYZ színmodell színei az sRGB modell feltüntetésével

A színpatkó külső szélein megjelenített tiszta spektrumszínek nem szerepelnek a standard RGB modell által additív színkeveréssel előállítható sRGB színtartományban (ld. a második ábra belső háromszögét; az ábrán a különböző színhőmérsékletű fénysugárzók által kibocsátott színek is szerepelnek, pl. egy háztartási izzólámpa kb. 2800 K, az átlagos napfény pedig kb. 5600 K színhőmérsékletnek felel meg). Az sRGB színmodell és a CIE XYZ színmodell közötti kapcsolatot meghatározott lineáris transzformációkkal adhatjuk meg.

A Young-Helmholtz (trikromatikus) elmélet szerint az emberi szem három fajta színérzékelő receptorral, ún. csappal (cone) rendelkezik. Az egyes csaptípusok különböző hullámhosszúságú fényre érzékenyek:
– az ún. S-csapok a kékre (400 nm környéke),
– az ún. M-csapok a zöldre (550 nm környéke), és
– az ún. L-csapok a vörösre (600 nm környéke)
a legérzékenyebbek. (Érdekesség, hogy a legtöbb emlős csak két csaptípussal rendelkezik, azonban számos hüllő, hal vagy madár szemében négy vagy annál is több csaptípus van, amelyek különböző hullámhossz-tartományokra érzékenyek.) A csapok száma közel 7 millió (más források szerint 6.4 millió). A különböző típusú csapok aránya a retinában különböző, ennek megfelelően a szem érzékenysége is különbözik az egyes színtartományokban. A csapok által érzékelt hullámhossz tartományok azonban erősen átfedik egymást.

Az emberi szem érzékenységét az egyes színekre az ún. láthatósági görbe adja meg, amely (világosban) a sárgászöld színre (555 nm) maximális.
az emberi szem színérzékenységét leíró ún. V(lambda) görbe az emberi szem színérzékenységét leíró ún. V(lambda) görbe

Az ún. standard RGB model alapszínei esetében a relatív láthatósági függvény értéke a vörös színre (609‐614 nm) V≈0.5, a zöld színre (549 nm) V≈1, a kék színre (466‐436 nm) pedig V≈0.05 (ezek aránya körülbelül 5:10:1, amely értelemszerűen függ a megvilágítástól).

(c) a színmodell megadja, hogy az egyes képpontok színét hogyan kódoljuk; például

– az RGB színmodell esetén minden színt a vörös, zöld és kék alapszínek különböző mértékű, ún. additív keverésével állítunk elő, ahol az R,G és B színek relatív intenzitását egy [0,255] intervallumba eső egész számmal adjuk meg; például a számítógépes monitorok ezt a módszert használják a színek előállítására;

– a HSL vagy HSB színmodell esetében egy színt a színárnyalat vagy színezet (color Hue), a (szín)telítettség, tisztaság vagy élénkség (Saturation, colorfulness, chroma, color purity) és a fényerő vagy világosság (Luminance, Brightness, lightness) segítségével adunk meg, ahol a H, S, L értékek a [0,1] intervallumba tartozó valós számok;

– CMYK színmodell esetében egy színt a cián (Cyan; türkiz vagy zöldeskék), magenta (Magenta; intenzív bíborvörös), sárga (Yellow) és fekete (blacK) színrétegek egymásra helyezésével állítunk elő, ahol a C, M, Y és K értékek a [0,1] intervallumba eső valós számok; az alapszínek ún. szubtraktív keverésének lényege az, hogy egy adott színű réteg kiszűri a vele ellentétes színeket (gondoljunk pl. egy olyan szemüvegre, amely sárga lencséket tartalmaz, és próbáljuk ki, hogy C=0, M=0, Y=1 és K=0 esetén milyen színt kapunk); például a színes nyomtatás ezen az elven történik.

A HSL modell például a Munsell-féle színrendszerben a következő ábrával szemléltethető (az ábrán a "Hue" a színárnyalatnak, a "Chroma" a telítettségnek vagy tisztaságnak, a "Value" a fényerőnek felel meg):
A Munsell-féle színmodell grafikus ábrázolása

Egy képpont színe egyaránt megadható az RGB és/vagy a HSL színmodellben, azonban a teljes képnek (vagy a kép egy meghatározott tartományának) további jellemzői is vannak. Ezek közül az egyik legfontosabb a kép egyes részei közötti kontraszt, amely lehetővé teszi a képen ábrázolt objektumok megkülönböztetését, ill. felismerését (a gyengén látók számára például a vizuális kijelzőkön megjelenített betűk színe és háttere közötti kontraszt erőssége rendkívül fontos). A kontrasztot a képpontok színének vagy fényerejének a különbsége határozza meg.

A kép két adott részlete esetében a kontraszt általános jellemzésére szolgálhat a képrészletekre számított maximális és minimális fényerő (luminancia) különbségének és a képrészletek környezetében számított átlagos fényerőnek a hányadosa. Ha például egy monokromatikus kép esetében két, azonos méretű és egyenként azonos (L1 és L2) fényerejű képrészlet alkotja a képet, a közöttük fennálló kontraszt

láthatóság (visibility) = Lmax - Lmin
0.5*(Lmax + Lmin)
láthatóság (visibility) = Lmax - Lmin
0.5*(Lmax + Lmin)
láthatóság (visibility) = Lmax - Lmin
0.5*(Lmax + Lmin)
láthatóság (visibility) = Lmax - Lmin
0.5*(Lmax + Lmin)

ahol az adott képrészletekre Lmax a fényerő legnagyobb, Lmin pedig a legkisebb értéke. (Más képletek is használatosak, pl. az ún. Michelson-féle képletben a tört nevezőjében a fényerő legnagyobb és legkisebb értékének összege szerepel.)

Például, ha a képrészletek azonos méretűek, fekete (L=0) és fehér (L=1) képrészletek esetében a láthatóság 2, fekete (L=0) és sárga (L=0.5) képrészletek esetében a láthatóság szintén 2 (megjegyzés: mivel az emberi szem érzékenysége különböző színekre más és más, színes megjelenítés esetén a sárga-fekete kombinációt tekintik optimálisnak). Fehér (L=1) és sárga (L=0.5) képrészletek esetében a láthatóság 0.67, azonos fényerejű képrészletekre pedig a láthatóság 0.

Különböző méretű képrészletek, például adott színű háttérre írt, azonos színű és kis méretű alakzatok (pl. betűk) esetében legyen az előtér/háttér méretarány r (<<1). Ekkor

láthatóság (visibility) = Lmax - Lmin
(1-r)*Lháttér + r*Lelőtér

A képletből következik, hogy a láthatóság nagyobb, ha sötét hátteret választunk (Lháttér=Lmin, Lelőtér=Lmax).


Színek, színkódok

Az alábbi táblázatban néhány (magyar és angol) színnevet és színkódot adunk meg (megjegyzés: a böngészőprogram az angol színnevek nem mindegyikét ismeri fel):

szín neve angol megnevezés HTML kód CSS (RGB) kód CSS (HSL) kód eredményül kapott szín
vörös red #FF0000 rgb(255,0,0) hsl(0,1,0.5)  
skarlátvörös scarlet #FF2400 rgb(255,36,0) hsl(0.0235,1,0.5)  
kardinálvörös (nyomdászati) ... #FF5117 rgb(255,81,23) hsl(0.0417,1,0.5451)  
barna brown #A52A2A rgb(165,42,42) hsl(0,0.5942,0.4059)  
narancssárga orange #FFA500 rgb(255,165,0) hsl(0.1078,1,0.5)  
sárga yellow #FFFF00 rgb(255,255,0) hsl(0.1667,1,0.5)  
bézs beige #F5F5DC rgb(245,245,220) hsl(0.1667,0.5556,0.9118)  
citromzöld lime green #BFFF00 rgb(191,255,0) hsl(0.2085,1,0.5)  
sárgászöld chartreuse green
chartreuse (CSS)
#80FF00
#7FFF00
rgb(128,255,0)
rgb(127,255,0)
hsl(0.2497,1,0.5)
hsl(0.2503,1,0.5)
 
zöld green
lime (CSS)
#00FF00 rgb(0,255,0) hsl(0.3333,1,0.5)  
libazöld screamin' green #74FF74 rgb(116,255,116) hsl(0.3333,1,0.7275)  
türkiz turquoise #40E0D0 rgb(64,224,208) hsl(0.4833,0.7207,0.5647)  
középtürkiz medium turquoise #5AD5D5 rgb(90,213,213) hsl(0.5,0.5942,0.5941)  
cián cyan #00FFFF rgb(0,255,255) hsl(0.5,1,0.5)  
kék blue #0000FF rgb(0,0,255) hsl(0.6667,1,0.5)  
ibolya violet #7F00FF rgb(127,0,255) hsl(0.7497,1,0.5)  
ibolyaszín (nyomdászati) ... #C37DF3 rgb(195,125,243) hsl(0.7655,0.831,0.7216)  
lila lilac #C8A2C8 rgb(200,162,200) hsl(0.8333,0.2568,0.7098)  
ciklámenszín (nyomdászati) ... #EA71EA rgb(234,113,234) hsl(0.8333,0.7423,0.6804)  
ibolya (CSS) violet (CSS) #EE82EE rgb(238,130,238) hsl(0.8333,0.7606,0.7216)  
magenta
intenzív bíborvörös
magenta
fuchsia
#FF00FF rgb(255,0,255) hsl(0.8333,1,0.5)  
sötét magenta dark magenta #8B008B rgb(139,0,139) hsl(0.8333,1,0.2725)  
magenta (nyomdászati) ... #E60082 rgb(230,0,130) hsl(0.9058,1,0.4510)  
magenta (szubtraktív) magenta (subtractive) #FF0090 rgb(255,0,144) hsl(0.9059,1,0.5)  
kardinálvörös cardinal #BF1F2F rgb(191,31,47) hsl(0.9833,0.7207,0.4353)  
(tesztsor) #C0C0C0 rgb(192,192,192) hsl(0,0,0.7529)

Tesztsor használata: Írjon be egy (érvényes) angol színnevet vagy HTML kódot:

Az ellentétes, kiegészítő vagy komplementer színpárok additív keverésekor a fehér-szürke-fekete monokromatikus skála valamelyik árnyalatát kapjuk. Például additív keverés esetében a vörös (#FF0000) és a zöldeskék vagy cián (#00FFFF), a zöld (#00FF00) és a magenta (#FF00FF), és a kék (#0000FF) és a sárga (#FFFF00) keverésekor egyaránt fehér színt kapunk. Hasonlóan fehér színt kapunk például az ibolya (#7F00FF) és a sárgászöld (#80FF00), a kardinálvörös (#BF1F2F) és a türkiz (#40E0D0), vagy a sötét magenta (#8B008B) és a libazöld (#74FF74) keverésekor. (Érdemes azonban megjegyezni, hogy a fentiek értelmében a vörös és a zöld nem ellentétes színek.) A megadott színpárok esetében a telítettség (szaturáció) értéke megegyezik, a fényerő (luminancia) értékek összege pedig minden esetben 1. A legjobb kontrasztot a példákban a sötét magenta (#8B008B) és a libazöld (#74FF74) eredményezi (kb. 0.91-es láthatósággal).

Emlékezzünk azonban vissza, hogy a különböző színek additív keverése a vörös, zöld és kék alapszínekből csak egy lehetséges módja a színek előállításának. Például a vörös szín additív keverésekor maximális intenzitású vörös alapszínre (R=255) és zéró intenzitású zöld és kék alapszínekre (G=0, B=0) van szükségünk. Ezzel szemben a vörös szín szubtraktív keveréskor a szín előállítása a vörös megtartásával és a zöld kiszűrésével (M=1), és ezzel egyidejűleg a vörös megtartásával és a kék kiszűrésével (Y=1) lehetséges. Értelemszerűen ilyenkor a vörös kiszűrését megvalósító cián szűrőt ki kell iktatnunk (C=0), és ha tiszta spektrumszínt akarunk előállítani, nincs szükségünk fekete szűrésre sem (K=0). Hasonlóan járhatunk el a zöld szín szubtraktív keverésekor, azonban ilyenkor más szűrőket kell alkalmaznunk (C=1, M=0, Y=1, K=0). Az alábbi táblázat segíthet a színek szubtraktív keverésekor:

R G B
C=1 0 (szűr) 255 (átenged) 255 (átenged)
M=1 255 (átenged) 0 (szűr) 255 (átenged)
Y=1 255 (átenged) 255 (átenged) 0 (szűr)
K=0 255 (átenged) 255 (átenged) 255 (átenged)

Ha bármelyik oszlopban szűrés szerepel, az adott szín intenzitása zéró lesz a színkeverés eredményében.

A komplementer (kiegészítő, ellentétes) színek látásfiziológiai értelmezésben a szemünk előtt színes utóképként megjelenő színeket jelentik. Ez akkor keletkezik, ha rövid ideig mozdulatlanul nézünk egy erős színfoltot, majd hirtelen egy semleges felületre (pl. fehér papírra vagy fehér színű háttérre) pillantunk. Ekkor egy rövid ideig (és rendkívül halványan, mintegy "árnyékképként") ugyanazt az alakzatot fogjuk látni, de az eredeti színnel ellentétes színben.

Első próba: nézzük rövid ideig a vörös téglalapot, majd mozgassuk az egérkurzort a fehér terület felé. Rövid ideig a vörös ellentétes színének megfelelő (halvány színű) téglalapot fogunk látni a piros téglalap helyén.

Második próba: nézzük rövid ideig a zöld téglalapot, majd mozgassuk az egérkurzort a fehér terület felé. Rövid ideig a zöld ellentétes színének megfelelő (halvány színű) téglalapot fogunk látni a zöld téglalap helyén.

Végül említsük meg, hogy az, hogy melyik színpárokat tekintjük kiegészítő vagy ellentétes színeknek, az elsősorban attól a színelmélettől függ, amelyet használunk. Az emberi színlátás Hering-féle, ún. ellenszín-elmélete szerint például a különböző színeket az emberi agy három ellentétes színpár segítségével, a szem színérzékelő csapjai által szolgáltatott ingerületek egyfajta összegzésével állítja elő. E szerint az elmélet szerint az ellentétes színpárok a kék–sárga, a vörös–zöld és a fehér–fekete.

A színárnyalatok például a Munsell-féle színmodellben egy kör kerületén helyezkednek el, az ellentétes színek pedig egymással szemben:
A színárnyalatok megjelenítése a Munsell-féle színmodellben

Átváltás az RGB színmodellből a CMYK és HSL színmodellekbe:

R = G = B =

HTML kód: #C0C0C0

C = M = Y = K =

H = S = L =

A színárnyalat fokban kifejezve (0-360): 0

további információk:
HSL to RGB color conversion - Stack Overflow (2018-03-19)
CMYK színtér - Wikipédia (2018-03-27)

Az átváltás a CMYK színmodellből az RGB színmodellbe elvileg szintén lehetséges:

C = M = Y = K =

R = G = B =

Prezentációk, weblapok készítésekor különböző színsémákat is használhatunk. Ezek generálására számos weblap kínál lehetőséget. Például a 02_sample.html egyszerű HTML prezentációs séma kialakításakor a Paletton.com sématervezőjét használtuk:

további információk:
Szín - Wikipédia (2018-02-23)
Contrast (vision) - Wikipedia (2018-03-24)
usability - What is a good color combination, visibility for outside use
- User Experience Stack Exchange (2018-03-26)
Színharmóniák és színkontrasztok (2018-03-24)
Kiegészítő színpárok - Wikipédia (2018-03-24)
KOMPLEMENTER SZÍNEK - Wikipedia (2018-03-27)
Color wheel - Wikipedia (2018-03-21)
CSS Colors - W3Schools (2018-03-19)
HTML Color Names - W3Schools (2018-03-19)
Colors HSL - W3Schools (2018-03-19)
SZÍNSZÓTÁR - ABC (2018-03-20)
SZÍNSZÓTÁR - BÍBOR (2018-03-20)
Paletton - The Color Scheme Designer (2018-03-19)


Képfájlok

Képfájlok esetén a kép maximális méretét a képpontok száma és a színmélység szorzata adja. Azonban ez sok esetben nagyon nagy fájlt eredményez; ezért a képfájlokat a legtöbb esetben valamilyen módon tömörítjük. Például
– bmp típusú képek esetén (elvileg) lehetséges az ún. futamhossz-kódolás;
– gif típusú képfájlok esetében az ún. LZW algoritmust használjuk a képfájl veszteségmentes tömörítésére;
– jpg formátumú képek esetén egyidejűleg több (veszteséges és veszteségmentes) tömörítési eljárás is előfordul, ilyenek pl. a diszkrét koszinusz transzformáció (DCT) vagy a Huffman-kódolás.

további információk:
BMP (2018-02-23)
Graphics Interchange Format (GIF) (2018-02-23)
PNG (2018-02-23)
JPEG (2018-02-23)


Az IrfanView telepítése

(0) Hozzon létre a számítógépén egy IrfanView mappát!

(1) Lépjen be az IrfanView - Official Homepage weblapra!
A weblapon a főmenü első menüpontja a DOWNLOAD (letöltés) menüpont; ebből válassza ki a számítógép típusának megfelelő opciót. A továbbiakban tételezzük fel, hogy 64 a számítógépben 64 bites processzor van. Ekkor az IRFANVIEW 64-BIT menüpontot kell kiválasztani (ellenkező esetben az IRFANVIEW 32-BIT menüpontot kell kiválasztani, és a későbbiekben is ennek megfelelően kell eljárni). (Megjegyzés: a számítógép legfontosabb jellemzőit például a Rendszerinformáció segédprogram segítségével írathatja ki.)

A megjelenő ablakban keresse meg a Download IrfanView-64 English (Version 4.51, ZIP file, 2.91 MB) és a Download IrfanView-64 PlugIns (Version 4.51, ZIP file, 22.30 MB) sorokat, és töltse le a linkekre kattintva az iview451_x64.zip és iview451_plugins_x64.zip állományokat. (Javaslat: érdemes ezeket a fájlokat egy külön mappába, pl. a Letöltések mappába letölteni.)

Az IrfanView állományainak letöltése.

A plugin (beépülő) segédprogramokat tartalmazó iview451_plugins_x64.zip állomány letöltésekor egy új fülben egy másik weblap nyílik meg, ezt a letöltés után érdemes bezárni.

(2) Az IrfanView - Official Homepage weblapon keresse meg a LANGUAGES menüpontot és ezen belül a Hungarian (help file included) Installer or ZIP sort. A ZIP állományhoz kapcsolódó linkre kattintva töltse le az irfanview_lang_hungarian.zip állományt (pl. a Letöltések mappába).

(3) Hajtsa végre egyenként a következő képéseket:

(4) A telepítés kész, innentől az IrfanView mappában (pl. dupla kattintással) az IrfanView (i_view64.exe) bármikor elindítható. Az első indításkor érdemes két dolgot beállítani:
(a) az Options menüben a Change language menüpontban a magyar nyelvet kiválasztani, és
(b) a Beállítások menü Beállítások menüpontjában az IrfanView programot a képekhez társítani.

további információk:
IrfanView - Official Homepage (2018-02-23)


A VirtualDub letöltése

A VirtualDub program a GNU licensz alapján szabadon letölthető a következő két formában:

32 bites verzió:
http://sourceforge.net/projects/virtualdub/files/virtualdub-win/1.10.4.35491/VirtualDub-1.10.4.zip/download

64 bites verzió (órákon ezt használtuk):
http://sourceforge.net/projects/virtualdub/files/virtualdub-win/1.10.4.35491/VirtualDub-1.10.4-AMD64.zip/download

A letöltött fájl mindkét esetben zip tömörítéssel csomagolt állomány. A letöltött fájl tartalmát bármilyen (pl. egy VirtualDub nevű) könyvtárba kicsomagolva a program azonnal használható, nem igényel telepítést.


Tartalom
Boda István, 2019.