Letöltés szimuláció

letöltés logó

letöltés logóLetöltési folyamatot szimulálunk. A paraméterek rugalmasan beállíthatóak. Előre beállított mennyiségű adatot, párhuzamos szálakon/folyamatokon keresztül töltünk le, miközben mérjük az eltelt időt. A folyamatok állapota lehet inaktív, aktív és befejezett. Az aktív folyamatok esetében megjelenő százalék fejezi ki, hogy a folyamat hol tart a rá jutó részfeladat végrehajtásával. Összesített formában követhetjük a hiányzó és a letöltött adat mennyiségét MB-onként és százalékosan is. A folyamat szimulációjához grafikus felületű Java kliensprogram készült, egyszerű GUI komponensekkel (nyomógomb, címke, folyamatindikátor, másképpen JButton, JLabel, JProgressBar swing komponensek).

Az alábbi animáció bemutatja a letöltés szimulációját:

letölés szimuláció

A konkrét paraméterek: 128 MB-nyi adatot töltünk le 256 párhuzamos szálon/folyamaton keresztül, így egy-egy részfeladat 0,5 MB-nyi adat letöltését jelenti. Minden értéket/mérőszámot egész számként ábrázolunk, akár százalékhoz tartozik, akár mértékegységként MB vagy s. A változások – és egyben a frissítés is – 5 ezredmásodpercként történnek a GUI-n.

A Java SE szoftverfejlesztő tanfolyamunkon, a szakmai modul Objektumorientált programozás témakörét követő 29-36. óra Grafikus felhasználói felület alkalmain már tudunk egyszerűbb szimulációs programot tervezni, kódolni, tesztelni. A Java EE szoftverfejlesztő tanfolyamunkon, a szakmai modul 5-8. óra Szálkezelés, párhuzamosság alkalommal többféle elosztott stratégiát ismertetünk, és a 17-24. óra Socket és RMI alapú kommunikáció alkalommal pedig megvalósíthatjuk többféle protokoll szerint a hálózati kapcsolatot, letöltést/feltöltést.

Elosztott alkalmazások esetén többféleképpen is modellezhető és kialakítható a rendszer architektúrája. Elosztott lehet maga a hálózat, a számítási folyamat, az algoritmus. Elosztott objektumok kommunikálhatnak egyenrangúnak tekinthető P2P szerepkörben vagy szerver/kliens oldalon, és több dolog/elem/hardver/szoftver/komponens együttműködéseként is megvalósulhat elosztott alkalmazás. A hálózati kommunikáció folyamatát valamilyen protokoll határozza meg, amit minden komponens ismer és így meghatározott szabályrendszer szerint működik.

Hardver szinten elosztottak a többprocesszoros rendszerek. Szoftveresen elosztott például egy moduláris vállalatirányítási rendszer, illetve a mobilalkalmazások többsége. Tipikus háromrétegű webalkalmazás esetén külön szerver nyújtja az adatbázishoz kapcsolódó szolgáltatásokat, a felhasználó számítógépén található a böngészőben futó/megjelenő kliensprogram/weboldal és a kettő között a felhő rétegben lehet a funkcionálisan elosztott alkalmazáslogika (például validálás, titkosítás, tömörítés, autentikáció, autorizáció).

A vezérlést megvalósító részlet a Java forráskódból:

 A szimuláció elvi szinten:

  • a folyamatok generikus listában vannak,
  • időzítő által meghatározottan, gyorsan és ismétlődve történnek az időzített lépések,
  • ha egy folyamat befejeződik, akkor kikerül a generikus listából,
  • ha a folyamatok generikus listája kiürült, akkor vége a szimulációnak,
  • ki kell választani véletlenszerűen egy folyamatot, léptetni kell véletlenszerűen, amíg be nem fejeződik,
  • folyamatosan nyilván kell tartani a szükséges adatokat a háttérben,
  • folyamatosan frissíteni kell a felhasználói felületet.

Haladóbb megközelítésben másképp is lehetne: a számítási műveletek redukálhatóak lennének, ha lenne egy – minden olyan adat karbantartásáért felelős – modellobjektum, amelynek adatai hozzá lennének rendelve a GUI komponensekhez. Aki már sejti, annak megerősítem, hogy igen, ez observer (megfigyelő) tervezési minta.

A feladat könnyen általánosítható, például:

  • Egy keresési feladatot oldjunk meg az állományrendszerben! Kereshetünk egy konkrét nevű fájlt, adott kiterjesztésű fájlt, joker karakterekkel paraméterezett nevű fájlt/mappát, adott méretű állományt, adott dátum előtt létrehozott fájlt… Az állományrendszer bejárása rekurzív módon történik. A gyökérben lévő mappánként külön, esetleg második szinten lévő mappánként külön indíthatók szálak, párhuzamos folyamatok. Ha egyetlen találat elegendő, akkor bármelyik szál pozitív visszajelzésére minden szál leállítható. A feladatnál nagy eséllyel nagyon különböző méretű mappákon és eltérő mélységű mappaszerkezeteken kell végighaladni, így erre érdemes lehet optimalizálni, de ez már nagyon más szintje ennek a problémának.
  • Active Directory szerkezetben keressünk elérhető nyomtatókat a hálózaton!
  • Elosztott számítási hálózatként működik/működött a SETI@home. Koncepciójának lényege, hogy egy hatalmas feladatot nem nagyon drága szuperszámítógépeken, hanem olcsó gépek ezrein, százezrein, vagy akár millióin végeztetjük el, amelyek jelentős szabad kapacitással (pl. processzoridővel, átmeneti tárhellyel) rendelkeznek és egyébként is csatlakoznak a világhálóra.
  • Hasonlóan elosztott működésű a torrent protokoll. A kliensek/szálak az állományokat több kisebb darabban/szeletben töltik le, természetesen párhuzamosítva. Minden csomópont megkeresi a hiányzó részhez a lehető leggyorsabb kapcsolatot, miközben saját maga is letöltésre kínálja fel a már letöltött fájldarabokat. A módszer nagyon jól beválik nagyméretű fájloknál, például videók esetében. Minél népszerűbb/keresettebb egy fájl, annál többen vesznek részt az elosztásában, ezáltal a letöltési folyamat gyorsabb, mintha mindenki egy központi szerverről töltené le ugyanazt (hiszen az informatikában minden korlátos, a sávszélesség is).
  • A képtömörítést végző algoritmusok is lehetnek elosztottak, ezáltal párhuzamosíthatóak. Például ha felosztjuk a képet 16*16-os méretű egymást nem átfedő részekre, akkor ezek egymástól függetlenül tömöríthetők.
  • A merevlemezek esetén korábban használatos defragmentáló szoftverek felhasználói felülete emlékeztet a mintafeladat ablakára.

Fontos szem előtt tartani, hogy a grafikus megjelenítés csupán a szimulációhoz tartozó – annak megértéséhez szükséges – reprezentáció, így teljesen független lehet a folyamatok valós működésétől.

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

Múzeumok Éjszakája 2021

Múzeumok Éjszakája

Múzeumok Éjszakája2021. június 26-án, szombaton került sor a XIX. Múzeumok Éjszakája programsorozat megrendezésére, melynek során rengeteg kiállítás és különleges esemény volt. A programok központi gondolata a fordulópont volt. A tematikus kiállítások ezen témára fűzték fel különleges tárlatvezetéseiket, a küzdelem, az újrakezdés és a megújulás szellemiségében. Idén a Budai Vár alatt elterülő Sziklakórházat és a Bélyegmúzeumot látogattam meg.

Sziklakórház

A Sziklakórház – a Múzeumok Éjszakája programsorozat keretében – a Hétköznapi hősök elnevezésű eseménnyel jelentkezett. A tárlat részben azon személyek visszaemlékezései alapján ismertette meg a látogatókkal a Sziklakórház mindennapjait, akik személyesen, vagy rokonságuk révén kapcsolatba kerültek a létesítménnyel.

A kórház II. világháború alatti működése

A nagyjából 1 km-es földalatti kirándulás első helyszínén – a bejárati alagútban – volt látható az a felirat, ami az intézmény szellemiségét oly sok évtizeden átlengte: „A Vöröskereszt nemzetközi bizottsága”. A Sziklakórház ugyanis a II. világháború alatt a Nemzetközi Vöröskereszt védelme alatt állt, ahová fegyverekkel tilos volt belépni. Ezt még a katonák is tiszteletben tartották, ezért belépésük esetén fegyvereiket a bejárati helyiségekben letették.

A Sziklakórházat az 1930-as évek végén 60 betegre tervezték, majd ezt a létszámot emeletes ágyak segítségével megduplázták, később pedig 200 fősre duzzasztották. A gépészetet, az ellátást, mindent ehhez a létszámhoz igazítottak, azonban a háborús körülményekből, és a központi elhelyezkedésből adódóan a befogadóképesség elégtelennek bizonyult. A II. világháború végén 700 beteget ápoltak egyszerre. Mivel mindenkit el kellett látni, ezért a sérülteket – a körülbelül 10 orvos és 30 nővér – folyósokra, szalmazsákokra és pokrócokra fektették le. A könnyebb sérülteket a környező üres barlangokba szállították, melyek elérhetőek voltak a Sziklakórház belső részeiből is. A kapacitás még annak ellenére sem volt elegendő, hogy sok önkéntes akadt, akik vizet vittek, mosdattak, az ápolóknak segítettek.

Dolgozók és ápoltak

A kötözőhelyiség – amiből ezen a részen három is rendelkezésre állt – volt az a hely, ahol a betegek először találkoztak az orvosokkal. Itt csak a könnyebb sérüléseket tudták ellátni, a műtéteket a belsőbb helyiségekben végezték. A kiállítás tárgyai eredetiek, melyek a 40-es, 50-es és 60-as évekből származnak. Itt található Dr. Seibriger András személyes hagyatéka is, melyet lánya adományozott a múzeum számára. A hagyatékban számos orvosi eszköz található meg. A II. világháború idején Dr. Seibriger András volt a kórház helyettes főorvosa, és az egyetlen olyan orvos, aki 1956-ban is visszatért szolgálatot teljesíteni.

A folyosón tovább haladva, a kórház egyetlen műtője mellé érkeztünk. A nagyobb szoba két bejárattal is rendelkezett. Amit azonban már akkor sem lehetett alkalmazni, az a két műtőasztal elhelyezése egy helyiségben. A tiltásnak érthető okokból a fertőzésveszély elkerülése lenne az oka, ám a háború, a szükséghelyzet és a kényszer minden időkben felülírja a szabályokat. Természetesen igyekeztek a helyiséget sterilen tartani, az operációkban pedig sokat segített, hogy a II. világháború ideje alatt az ország legjobban felszerelt műtője volt, ami rendelkezett a kor összes technikai vívmányával, az orvosi eszközökön át a gépesítésig.

A tárlatvezető ezen a helyen olvasta fel Venecsek Oszkár lányának visszaemlékezéseit, melyből megtudhattuk, hogy miként mentette meg a Sziklakórház sebészorvosa attól, hogy félgyógyult állapotban visszakerüljön a frontra. Amikor tisztek érkeztek a kórházba, hogy visszavigyék a frontra a gyógyult és részben gyógyult katonákat, az orvos Venecsek Oszkárt beöltöztette ápolónak, és a műtőasztal mellé állította. Az eset idején éppen áramszünet volt, ezért az álápoló azt a feladatot kapta, hogy a zajló műtéthez egy lámpával világítson. A tisztek a helyiség átvizsgálása után, továbbhaladtak.

A közelben, egy kis eldugott szegletben volt látható az a ráccsal elzárt lépcső, ami Dr. Kovács István főorvos irodájához vezetett. A II. világháború alatt ő volt a kórház igazgatója.

További anekdotát hallhattunk a műtővel szemben elhelyezett hordozható, katonai röntgengépről. A helyi legenda szerint csupán egyetlen egyszer volt használva a gép, amikor a hely gondnoka eltörte a kezét, és szükség volt egy felvételre. Sajnos a felvétel nincs meg.

Háborúkban és kórházakban a halál sajnos gyakorta megfordul. A Sziklakórház esetében sem volt ez másként, ugyanakkor a II. világháború alatt az elhunytak számára megadott tisztelet nehezebben volt kivitelezhető. Napközben életveszélyes volt kimenni a létesítményből, hiszen a felszínen harcok dúltak, emiatt a holttestek eltemetése akadályba ütközött. A holttestek ideiglenes tárolását a folyosóról nyíló egyik zöld ajtó mögött elhelyezkedő két kamrában végezték el. Aztán az éjszaka beálltával innen, a felszínre vezető lépcsőt használva vitték fel a halottakat eltemetni. A környező utcákban és a Várban tömegsírokat alakítottak ki. Az eltemetettek azonosítószámokat kaptak, hogy ha a háborút követően felnyitják a sírokat, akkor beazonosíthatóak legyenek, és megfelelő tisztességgel helyezhessék nyugalomba az elhunytak maradványait.

A Nemzetközi Vöröskereszt magyarországi delegáltja Friedrich Born volt. A múzeum az ő részére alakított ki egy emlékszobát, ahol viaszfigurája is megtekinthető. A kórház neki köszönhette a Vöröskereszt által nyújtott nemzetközi védelmet. Delegáltként neki jogában állt menleveleket, védleveleket kiadni a Vöröskereszt dolgozóinak és önkénteseinek, így a katonák nem bántották, és elengedték ezeket az embereket. Born felismerte a lehetőséget, és nagyon sok családnak állított ki ilyen papírokat, amivel nagyjából 15000 ember életét mentette meg.

Dr. Mester Endre – a lézerfénnyel történő gyógyítás úttörője, a lágylézer feltalálója –sebészként végezte tevékenységét. Megemlékezéseiben mesélte el, hogy a Honvédelmi Minisztérium – hét másik kollégájával együtt –, munkaszolgálatos orvosként rendelte őt a Sziklakórházba szolgálattételre. Elmondása szerint Kovács főorvos emberien, kollegiálisan, sőt ezen túlmenően barátsággal kezelte őket. Kívánságaikat, kéréseiket – amennyiben módjában állt – teljesítette. Október 15-én két napra mindannyian önkéntesen távoztak a kórházból, s ez idő alatt Kovács főorvos fedezte őket, majd a kórházba való visszatérésüket is segítette. A munkaszolgálat ideje alatt a legmesszemenőbben a segítségükre volt.

A túra során bemutatásra került a létesítmény legrégebbi helyisége is, az 1937-ben kiépített légoltalmi riasztó központ. Itt teljesített szolgálatot a légoltalmi liga, ami egy nem katonai szervezet volt. Az ő feladatuk volt a civilek védelmének megszervezése egy esetleges légitámadás esetén. A témáról bővebben lehet olvasni a Múzeumok Éjszakája 2009 cikkemben.

Utánpótlás nélkül, túlterheltség mellett

A kórháznak a II. világháború idején három kórterme volt. Egy a nőknek, egy a civil férfiaknak és egy a katonáknak. A múzeum, a legnagyobb kórteremben berendezett kiállítással kívánta szemléltetni a korabeli rossz körülményeket. Emeletes ágyak összetolva, két ágyon három ember, zsúfoltság egyetlen nővérrel. A kórház a Szent János Kórházzal tartotta a kapcsolatot, azonban a szovjetek előretörésével, ez a kapcsolat 1944 őszén megszakadt, és az utánpótlási útvonalak is megszűntek. Ez jelentős problémát jelentett, hiszen a szükségkórház nem rendelkezett megfelelő tárolóhelyiségekkel, így raktár kapacitásai sem lehettek. A gyógyszerek, kötszerek, fertőtlenítőszerek, és persze az élelem is, nagyon gyorsan elfogytak. Az elvágott utánpótlás miatt elhullott lovak húsát fogyasztották, a kötszereket pedig kifőzéssel fertőtlenítették és használták fel újra. Aztán a Vár egyetlen vízfőnyomócsöve felrobbant, ezzel az egész Várnegyed levált az ivóvízhálózatról. Nagyon sokan az elégtelen higiéniai körülmények következményeként vesztették életüket, nem pedig a sérüléseik okán.

Az eredetileg tervezett 200 ember helyett 700 sebesültet láttak el. Emiatt nagyon meleg és párás volt a levegő, a terjengő szagokról nem is beszélve. A légcserélő berendezés természetesen folyamatosan cserélte a levegőt, ám teljesítményét nem 700 emberre tervezték. Ennek ellenére a kórház dolgozói maradtak. Így tett Széchenyi Ilona grófnő, akkor 21 éves önkéntes ápoló is, akinek visszaemlékezéseiből kiderült, milyen körülmények között kellett helytállniuk. Emlékezete szerint az önkéntesek megállás nélkül dolgoztak, többek között a kórház vízellátásán is. Hajnalonként ők gyűjtötték össze a havat a kórház előtti területekről, amit aztán bent felhasználtak. Sok esetben fordult elő, hogy egyik-másik önkéntes többé nem tért vissza. A szükség sokszor megtanít a megoldásokra – említette gróf Széchenyi Ilona, aki kitanulmányozott egy módszert, aminek segítségével másfél liter vízből megoldotta a napi tisztálkodást, és még a fogmosásra is jutott belőle. Kevés alvással töltött idejüket mindig ott töltötték, ahol éppen helyet találtak. Egyik kimerítő, megfeszített munkával töltött napját követően, éjszakáját – melyre érthető okokból mély undorral emlékszik vissza – egy éppen felszabadult hordágyon töltötte el, melyen a ráömlött száradó vér, és annak penetráns szaga okán nem éppen gusztusos állapot volt. Az étkezést nehezen oldották meg, de valahonnan mindig előkerült valami, amivel ellátták a dolgozókat és a betegeket. A kórtermet illően emlékezik meg a szolgálatot teljesítő orvosok, ápolók és önkéntesek hősies kiállásáról, hiszen emberhez nem méltó körülmények között végezték tevékenységüket, próbálva menteni az emberi életeket, és segíteni a rászorultaknak.

A kórház 1956-os forradalom és szabadságharc alatt betöltött szerepe

A létesítmény 1956-ban működött második alkalommal kórházként. Az 1944-ben megnyitott kórház 1945 nyaráig üzemelt. Ekkor leszerelték, felszereléseiket elvitték más kórházakba, és egy magánvállalkozás tífusz elleni oltóanyag gyárként hasznosította a földalatti helyiségeket. Aztán 1950 és 1954 között a kórházat kibővítették, a gépészetet modernizálták, és létesítmény teljes területe folyamatos karbantartás alá került. Ennek okán dolgozott itt egy gondnok házaspár, akiknek feladata volt gépek üzemben tartása, a szellőztetés, az ágyneműk rendszeres mosása és cseréje. A kórház készenléti üzemben működött.

1956. október 24-én, a forradalom kitörésének másnapján nyitotta ki kapuit újra kórházként. Ekkor már volt elég fekhely, mindenkinek elegendő gyógyszer, kötszer, élelmiszer. Egyetlen problémával küzdöttek csak. A gyors, hirtelen nyitás következtében nem volt elegendő nővér, akik segítettek volna a sérültek ellátásában. Az Állami Védőnőképző Iskola tanítványai érkeztek segíteni.

A forradalom alatt üzemelő kórház ellátási körülményeibe – egy egykori sebesült – Balogh Samu katona visszaemlékezései engednek betekintést. Dicsérte az akkori összetartást, amit azzal a történettel jellemzett, amikor egy parasztember érkezett faluról egy szekérnyi tojással. Azt mind a kórház számára hozta. Az orvosi ellátásban nem volt kivétel. Balogh Samu mellett például egy orosz katona feküdt, akit a sajátjai lőttek meg. A fegyver valahogy elsült és a lövedék keresztülhatolt a torkán. Egy tüdőlövéstől szenvedő másik orosz katonát Székesfehérvárról szállítottak be. Ő kiskatona volt, mégis ellátták. Mindenki ugyanolyan orvosi ellátást kapott.

Az 1956-os események ideje alatt hat kisfiú és egy kislány született a földalatti kórház falai között. Végül a kórház 1956 decemberében zárt be, helyét titkosították, és létezése az évtizedek során lassan feledésbe merült.

Bélyegmúzeum

A kis belvárosi múzeum igazi különlegesség a grafika, a régiségek, és a történelem kedvelőinek. A tárlat állandó elemét képezi az az elem, melynek 3200 kihúzható keretén belül ötszázezer bélyeg található a világ minden tájáról, melyek mindegyike egy egyedi műalkotásnak tekinthető. A múzeumban jelenleg a „Darabokra szaggattatol…” Trianon 100 – Összetartozás 1100 elnevezésű időszaki kiállítás látogatható. A kamarakiállításon pedig Helbing Ferenc bélyeg- és bankjegytervező munkásságának az állami megrendeléseket felölelő pályaszakaszát tekinthetjük meg. A Múzeumok Éjszakája alkalmából tartott programsorozat egyik témája is ehhez kapcsolódott „A bélyeg- és papírpénztervezés rejtelmei” címmel.

A kezdetekről

A világ első bélyege a Penny Black volt 1840-es megjelenéssel. Technikáját tekintve mélynyomással (réznyomás, acélnyomás) készült. Az első Magyarországon használt bélyeget pedig 1850-ben vezeti be az Osztrák-Magyar Postaigazgatóság, minden címleten ugyanazzal a bélyegképpel. Ezek viszont magasnyomású (könyvnyomás) bélyegek voltak.

Jellemzően három nyomási technológiáról lehet beszélni bélyegkészítés során: síknyomás (litográfia), mélynyomás (réznyomás), magasnyomás (könyvnyomás). Tervezés során a grafikusok számára a vonal sűrűsége és vastagsága az, ami komponálási lehetőséget biztosít. Mivel ezek a nyomás fajtától függően változhatnak, ezért a grafikusnak el kell tudni képzelnie, hogy melyik nyomdatechnológiával, hogyan fog kinézni az általa tervezett bélyeg.

A magasnyomás olyan, mint a gumibélyegző. A kiemelkedő rész hordozza a festéket, és a vonalak közötti részt mélyítik ki. Mélynyomásnál ez fordítva van. A vonalakat vagy metszik, vagy maratják. Ezen kialakított vályúkba dörzsölik bele a festéket, amit aztán a bemélyedésből szed ki a papír. Mivel a nyomólemezt kellő erővel kell a papírra préselni, ezért a papír másik oldalán látszódni fognak a nyomóelem kiemelkedő részei. A papír másik oldala ott domború lesz. Síknyomásnál egy kőre rajzolnak zsíros festékkel (tussal), majd a még meg nem száradt festéket hintőporral megszárítják és gumiarábikummal kezelik. A festéket terpentinnel kimossák, aminek helyén ott marad a zsír. A kőnek folyamatosan nedvesnek kell maradnia, mert a következő mozzanatban a kő és a festék víztaszító képességét használják ki. Az egész kőre felviszik a litográf festéket. Ahová eredetileg nem került semmi a zsíros festékből, ott a víz nem engedi a festék feljuttatását a kőre, ahová pedig korábban rajzoltunk a zsíros festékkel, ott a festék rákerül. Ezt követően már jöhet a kőre a papír, és a megfelelő nyomó eljárással a friss festék a kőről a papírra kerülhet. Ennél az eljárásnál fontos, hogy a kőlaphoz semmilyen bőrfelületünk ne érjen hozzá, mert ez esetben zsíros lesz, és az nyomot fog hagyni a papírra nyomásban.

Az első magyar bélyeget például mélynyomásra tervezték, ám a megrendelt réznyomógépek nem érkeztek meg. Ezért azt választották, hogy litográfiával nyomják ki, tehát a bélyegeket átrajzolták kőnyomásra. Litográfiánál a vonalak széle bizonytalan, elmosódott. Mélynyomásnál viszont sokkal élesebb a vonal. Ezért kellett a grafikusnak az eredeti bélyeget átrajzolnia, mert végül más technológiával nyomták ki. Érdekesség, hogy a világtörténelem során – a Tanácsköztársaság ideje alatt – Magyarország adta ki az első Marx és Engels bélyeget, amely szintén litográfiával készült.

Még az 1800-as évek végén, az első magyar bélyegeken uralkodók és címerek voltak láthatóak. Azonban hamar rájöttek, hogy egy ország a bélyegen keresztül nagyon sok mindent tud elmondani a külföldiek és saját lakói számára. Ekkor jelennek meg az első képesbélyegek, melyen olyan motívumok láthatóak, mint a turul vagy a magyar puszta gémeskúttal. Az 1916-ban megjelent aratós bélyegsor, már igazi képesbélyegnek nevezhető (komolyabb grafikai alkotás), a hozzá tartozó Parlament képesbélyeggel együtt. A világ első képesbélyegei közé tartozik az első újkori olimpia görög bélyege, amire magasnyomással az ókori olimpiai atlétikai stadiont nyomták.

Helbing Ferenc

Helbing Ferenc (1870-1958) grafikus, reklámgrafikus, művészetpedagógus, az Iparrajziskola első vezetője, a Grafika Tanszék megalakítója, majd a későbbi Magyar Iparművészeti Egyetem alapítója és első rektora volt. Az első alakja a magyar bélyegtervezésnek, aki hosszú évtizedekig dolgozik.

Első beadott bélyegpályázata az 1909-ből való szecessziós stílusban, magasnyomásra készített Szent László bélyegsor. Bár pályázatát végül nem választották ki – a bélyegekre a turul és Ferenc József került –, díjként mégis nyert 1700 koronát, ami akkoriban nem kevés pénznek számított.

A tervezés során sosem a bélyeg eredeti méretében terveznek, hanem átlós méretben 3-4-szeres nagyításban. A grafikus maga javítja az esetleges várható hibákat, mert tudnia kell, hogy hol vannak azok a határok, amiket még elbír a kicsinyítés. Helbing tusrajzot készített, majd a zavaró részeket fehér temperával fedte el.

Helbing egy másik ismertebb bélyegsorozata a Hadifogoly címet viseli. A téma mindig az éppen aktuális kortól függött, ez esetben az I. világháborús hadifoglyok hazahozataláról volt szó. A bélyegek szélein megjelent a „Segítsük haza véreinket!” és a „Hadifoglyaink javára X korona” felirat. Litográfiával és ofszetnyomással készült. Helbing a tervet tussal készítette. Érdekesség, hogy az orosz télben, a haza felé megtörten gyalogló katonát ábrázoló kép, eredetileg fekvő helyzetű lett volna, de a kompozíciót túl centrálisnak tartották. Ebből alakult ki az álló kép, levágva ezzel a képről részleteket, például a háttérben gyalogoló többi katonát. Az új terven a katona azonban erősnek és határozottnak tűnt, ami 4-5 év hadifogság után nem festett valós képet, ezért a katonát kissé újra rajzolva megdöntötték, mintha beledőlne a szélbe. Hasonló változtatásokon és újra rajzolásokon ment keresztül a témához kapcsolódó másik bélyeg is, ahol a kerítés és szögesdrót mögött három hadifogoly látszik.

Helbing másik emlékezetes műve a Nagy Madonna bélyeg, mely egy 5000 koronás címlet volt. Emlékezetessé valójában a nyomda tette, ugyanis a bélyeg kétszínnyomással készült, a folyamatba pedig hiba csúszott. A különböző színek miatt külön fázisban nyomták a keretet, és külön fázisban a Madonnát. Fázisellenőrzésnél azonban fordítva került vissza egy ív a gépbe, ezért a Madonna fejjel lefelé került rá a bélyegekre. Mire a hibát észlelték 100 bélyeg már forgalomba került, amiből 20 darabot sikerült csak visszagyűjteni. Nagyjából ugyanennyi bélyeg maradhatott fenn napjainkra, melyek értéke néhány millió forint között mozog. További érdekesség, hogy Helbing mélynyomásra tervezte a bélyeget, azonban a közölték vele, hogy magasnyomással fogják elkészíteni. Emiatt a képet némileg át kellett terveznie, hogy illeszkedjen a megfelelő nyomdatechnikához.

Helbing egyik legismertebb műve a Sportsor. Eredetileg egyéni versenysport témájú bélyegeket adtak volna ki, végül azonban Helbing tömegsport bélyegsor megtervezésére kapott felkérést. Ezt követően azonban mégis kiadtak egy versenysport tematikájú bélyegsorozatot, mégpedig atlétika témájában. Ez egybe csengett a Levente Mozgalom indulásával is, ezzel biztatva a fiatalokat a sportolás fontosságára.

Az előadáson további információkat kaphattunk a Helbing által készített Szent István sorról, a Petőfi sorról, a Horthy Miklós 10 éves kormányzóságáról megemlékező bélyegről, valamint a Justice for Hungary óceán átrepülésről készített sorról. Ez utóbbi esetében Helbing csak egy címletet tervezett, azt, amelyiken a repülőgép látható. Ezenkívül ő tervezte korábban a törvényszéki illetékbélyegsort, amelyen Justicia képe látható a Szent Korona kíséretében. Szintén ő tervezte az értékpapír forgalmi adók illetékbélyegsort is, melyeken Patrona Hungariae-t ábrázolta, azonban a nagyobb 10000 koronás bélyegen már Szent István képe látható.

Napjainkban a bélyegtervezés már számítógéppel történik, sok esetben fotók alapján dolgoznak. Például egy kisívben készült francia bélyegsor esetében a csokoládé feltalálásáról emlékeztek meg. Úgy valósították meg, mintha az ív szélére a csokoládét körbe ölelő alufólia lenne kihajtogatva. A bélyegek jövőbeli szerepe egyelőre változatlannak tűnik. Bár Horvátországban egy alkalommal már adtak ki QR kódos bélyeget, a digitalizálás erre a területre egyelőre nem szivárog be.

Bankjegytervezés a XX. században

A XX. század elején Helbing Ferenc tervezte az első magyar bankjegyeket is. Ekkor önálló Magyar Nemzeti Bank még nem létezett, így Helbinget a Magyar Posta Takarékpénztár kérte fel a tervezésre. Alacsony címletű 10 koronás papírpénzt terveztettek vele, majd a 100 koronás bankjegyet.

Az első, ami igazán bankjegy sorozatnak indult, azt már az állam megbízásából tervezte meg. Ez még mindig nem bankjegy, hanem államjegy elnevezéssel készült el. Az 1 koronás már tartalmazta „Az államjegy utánzása a törvények szerint büntettetik” feliratot. 1920-ban, szintén államjegy formájában következett a 2, és 5 koronás. Ezeken visszaköszönnek az általa tervezett bélyegeken korábban már használt elemek, illetve Helbing tervezésében a rozetták is. A hátoldalát illetően szabad kezet kapott, viszont az állam területén élő nemzetiségek nyelvén fel kellett tüntetni a pénz értékét. Szintén 1920-ban jelenik meg a 10 koronás címlet. Itt már megjelenik a Budai Vár a Lánchíddal. A húsz koronás bankjegy előoldalán a Mátyás templomot láthatjuk. Helbing tervezett korábban Mátyás templomos bélyeget, ami nem nyert pályázatot, viszont azon terveit felhasználta ennél a bankjegynél. A sorozat legnagyobb címlete a 10000 koronás volt Patrona Hungariae képével. Ennek mintájára kiadtak még egy 25000 koronás bankjegyet is, de az már kevésbé terjedt el. A bankjegyek minél nagyobb címletet képviseltek, annál nagyobb méretűvé váltak. A legnagyobb bankjegyek már majdnem A4-es méretet értek el.

Aztán az infláció következtében 1922-ben új bankjegysorozatot nyomnak, melyen már megjelennek az államiság jelképei is. 1923-ban már annyi címlet került forgalomba, hogy kifogytak a híresebb királyokból és szentekből, ezért Helbing bécsi műtermének egyik modelljét helyezte rá az 50000 koronás címletre. A pénz inflálódása miatt nem volt idő új bankjegyeket tervezni, ezért az 50000-es címlet tervén átírták a számot 100000-re, és kiadták más színben. Ezen felül még volt az 500000-es címlet, majd végül az 1 milliós címlet.

A pengő bevezetése

1926-ban megszüntették a koronát, és elkezdték nyomni a pengőket. Ezzel szintén Helbing Ferencet bízták meg. A legkisebb címlet az 5 pengős volt. A bankjegy eleje kicsit az amerikai dollárra hajazott, ám Helbing a hátoldalon visszatért a magyar motívumokhoz, melyeket némileg a korra jellemző art deco és szecessziós jegyekkel egészített ki. Ez köszönt vissza a további címleteken is, míg a 100 pengős esetében már a bankjegy eleje is tartalmazott nemzeti motívumokat.

A pengők sorában ez volt az első sorozat (1926), melyet követett más tervezők munkája által a második sorozat (1927-1932), majd a II. világháború előtti sorozat (1936-1941). Erőteljes infláció híján ezek értéke már nem változott, csupán a bankjegyeket cserélték le újabbakra.

Aztán 1945. május 1-jén elszabadult a világtörténelem eddig legnagyobb inflációja, mely 1946. június 30-ig tartott. Helbing itt is számos bankjegyet tervezett. Rendszeresen visszanyúlt korábbi munkáihoz mintákért, hiszen ekkor már volt olyan időszak, amikor az árak reggel és este is duplázódtak, így havonta jelentek meg újabbnál újabb címletek.

Bankjegytervezés a XXI. században

Az előadás néhány anekdotával folytatódott. Szóba került a 200 Ft-os bankjegy, amelynek előoldalára Károly Róbert portréját tervezték, azonban a királyról viszont nem maradt fenn korabeli metszet vagy festmény. A pénzjegynyomda infrastruktúráját éppen ez idő tájt cserélték le számítógéppel vezérelt rendszerre. Amikor az új szoftverrendszer vezetője belépett Vagyóczky Károly, bankjegytervező grafikus irodájába, Vagyóczky kijelentette, hogy róla fogja mintázni Károly Róbertet. Tehát aki a 200 Ft-os bankjegyre került, ő valójában egy svájci szoftvertervező cég hazai ügyvezetője volt. Az ötlet megvalósítása aztán odáig fajult, hogy amikor Temesvár szobrot állíttatott Károly Róbertnek, az arcmintát a 200 Ft-os bankjegyről másolták.

Másik érdekes történet az 1000 Ft-os bankjegyhez kapcsolódik. A bankó előoldalára Mátyás király portréja került, így értelemszerűen a hátoldalra is el kellett valami hozzá kötődőt helyezni. A Magyar Nemzeti Bank ugyan ragaszkodott a visegrádi Herkules-kúthoz, ez a kút azonban nem létezett. Ezért a bankjegy tervezők elővették a kútról még létező korabeli terveket, és azok alapján elkészítették a kút 3D-s modelljét, majd annak 2D-s változatát helyezték rá a bankjegyre. Később, a Visegrádi Királyi Palota felújításánál a tervezők a bankjegyen látható grafikát vették alapul, majd építették meg a kutat.

Ezekhez hasonló anekdota, amikor az 5000 Ft-os bankjegy tervezése zajlott, aminek a hátoldalára a nagycenki Széchenyi-kastély került. A tervező leutazott Nagycenkre, és számos fotót készített a kastélyról. Viszont a tervezésnél felmerült az az akadály, hogy a kastély bejáratában levő nagyméretű kerítést teljesen benőtte a kúszónövény, ami zavarta a kastélyra történő tiszta rálátást, ezért ezt a grafikán el kellett tüntetni. A „növényirtás” annyira jól sikerült, hogy később a kastély parkfelügyeletének is megtetszett, így a helyszínen ők is leszedték a bukszust a kerítésről.

Az újratervezett forint bankjegysorozat

A terv egy korszerű és kevésbé hamisítható bankjegy készítése volt, a frissített forint sorozat bevezetésével. A magyar bankjegyek alapanyagát papír helyett rongyokból készítik. Papírnak tűnik, de papírt nem tartalmaz. Ebbe az alapanyagba kevernek színes rostokat, így már maga a papír alapanyaga is nehezen hamisíthatóvá válik. Olyan újításokat vezettek be, mint a színváltó elem. Ez az elem más és más megvilágításban különböző színnel reflektál. Másik biztonsági elem az a H betűs motívum, ami teljes egészében csak fényátnézeti képen jelenik meg. Stilizáltan, keresztben került beépítésre a vakjel, ami magasnyomású technológiához passzoló festékkel van nyomva, ezért ujjbeggyel kitapintható. További grafikai elem csak UV fény alatt látható. Egy másik biztonsági elem a hologram csík, amiben UV fény alatt további elemek válnak láthatóvá. A bankjegyeket fénymásolás és szkennelés elleni védelemmel is ellátták. Ez esetben a bankjegyre nyomott speciális festék úgy torzítja a fénymásoló megvilágítását, hogy az elkészült kép torzítottá, és ezáltal használhatatlanná válik.

Fibonacci-spirál

Fibonacci nap

Fibonacci nap 2018A Fibonacci-spirál a népszerű Fibonacci-sorozat elemei által meghatározott oldalhosszúságú négyzetekbe rajzolt maximális sugarú negyedkörök megfelelően összeillesztett darabjaiból/sorozatából áll. Sokszor hasonlítják az arany spirálhoz (jól közelíti), amely az aranymetszéshez kötődik.

A Fibonacci-spirál

Vegyük a Fibonacci-sorozat első 10 elemét! Rajzoljuk egymás mellé az alábbi elrendezésben belülről kifelé haladva az 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 oldalhosszúságú négyzeteket (az alábbi ábrán vékony sárgával jelölve). Piros színnel rajzoljuk bele a négyzetekbe a négyzet oldalhosszával megegyező sugarú negyedköröket. A negyedkörök megfelelő elrendezésben folytonos görbét alkotnak, és ezt nevezzük Fibonacci-spirálnak (az alábbi ábrán vastag pirossal jelölve).

Fibonacci-spirál 1

A rajzolás bármeddig folytatható, mert a sorozat végtelen, a négyzetek illeszkednek és az ábra rekurzív, önhasonló. Az alábbi animáció mutatja, hogyan alakul a spirál a nézőpont közelítésével. A viselkedés távolítás során is azonos lenne.

Fibonacci-spirál 2

Korábban blogoltunk már a Fibonacci napról, amelyet minden évben november 23-án ünneplünk. A sorozat első néhány eleméből összeáll a 11.23. és értelmezhető dátumként. Most nem a sorozat elemeinek előállítására fókuszálunk, hanem arra, hogy ezekből felépítsük a Fibonacci-spirált.

Készítsünk Java programot!

Grafikus felületű Java programot készítünk, amely 21 animációs fázisban mutatja be a Fibonacci-sorozat első 10 eleméből álló Fibonacci-spirál felépítését. A rajzolás fázisai:

  • Az 1. fázis a kiindulópontként tekinthető fehér, üres rajzlap. A rajzlap fekvő, mérete 890*550 pixel, amelyre éppen elfér a 10 negyedkörből álló spirál.
  • A 2-11. fázisban megfelelő pozícióba/koordinátákra kerülnek fel az ábra vázát alkotó négyzetek, belülről kifelé haladva. A négyzetek oldalainak hosszúsága a sorozat elemeinek megfelelő. A szomszédos négyzetek különböző színekkel kitöltöttek és mindegyikben megjelenik a sorozat megfelelő eleme.
  • A 12-21. fázisban – szintén belülről kifelé haladva – a négyzetek törlődnek és helyükre a spirált alkotó negyedkörök kerülnek fekete színnel. A 21. fázist tekintjük végeredménynek.

A fázisok kézzel, nyilakkal jelölt (Első, Előző, Következő, Utolsó) vezérlő nyomógombokkal megjeleníthetők, illetve egyben, időzítve animációként is lejátszható a rajzolási folyamat. Az elkészült program működése megfigyelhető az ábrán:

Fibonacci-spirál Java program

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A Java SE szoftverfejlesztő tanfolyamunkon, a szakmai modul Objektumorientált programozás témakörét követő 29-36. óra Grafikus felhasználói felület alkalmain már tudunk egyszerűbb szimulációs programot tervezni, kódolni, tesztelni.

Hóesés szimuláció

Hóesés szimulációt tervezünk és valósítunk meg Java nyelven. A téma igazi örökzöld. Elvileg minden télen aktuális. 😉 A grafikus felülethez és az eseménykezeléshez a swing gyűjteményt használjuk. Adott egy téglalap alakú terület amelyen – méretéhez igazodva – több száz hópehely mocorog. A területet önállóan programoztuk le – azaz ez alkotja a teljes GUI-t –, de lehetne egy nagyobb kép része is. Többféleképpen is beépítünk véletlenszerűséget a szimulációba. Tervezünk is, hiszen az sosem árt. 😉

Többnyire beépített komponenseket, elemeket használunk, de van saját, örökítéssel testre szabott komponensünk is:

  • A szimuláció a Window osztályból példányosított felületen működik, amely JFrame utód. Nem átméretezhető és látható.
  • A területet JPanel típusú pnTransparentWindow alkotja. Mérete 300*200 pixel. Színe a szürke egyik árnyalata. Ezen mozognak a hópelyhek.
  • A hópehely Snowflake típusú JPanel utód. Mérete 2*2 pixel. Színe fehér. Saját swing-es Timer biztosítja az eseménykezelését. A szimulációban 600 hópehely szerepel.

Az elkészült szimuláció

A teljes forráskódból íme a hópehely megvalósítása

A hópehelynek „tudnia kell” hol van, azaz mekkora területen mozoghat, ez a rectangle. A hópehelynek van size mérete. A hópehely saját magát mozgatja a területen a timer segítségével. Az időzítés várakoztatására/késleltetésére vonatkozó delay értéke véletlenszerűen 50, 100, , 250 milliszekundum lehet. Másképpen: a szél által össze-vissza fújt hópelyhek között lehetnek lassabban és gyorsabban mozgók is. Az eseményobjektumhoz lambda kifejezés rendeli hozzá a reakciót jelentő, mozgást megvalósító move() metódus meghívását, amely így adott időközönként bekövetkezik.

A hópelyhet a konstruktora hozza létre. Átveszi azt a pnTransparentWindow területet, amelyre később rákerül a Window példányosítása során. A gyengébb setSize() metódus helyett az erősebb setPreferredSize() metódus állítja be a méretet. Véletlenszerű x és y pozícióba kerül ki/fel a területre. A setBounds() örökölt metódus beállítja a pozícióját és méretét. Erre épít a fogadó oldalon az abszolút helyzet, külön elrendezésmenedzser nélkül. Végül a hópehely átlátszó, fehér és elindítja saját időzítőjét a timer.start() metódushívással.

Az időzítés/várakoztatás véletlenszerűsége után íme a második véletlenszerűség a szimulációban. A hópehely mozgása során a szél által össze-vissza fújva eltérő eséllyel/valószínűséggel mozog 8 lehetséges irányba az alábbiak szerint:

  • 5-5% eséllyel felfelé, azon belül jobbra vagy balra (átlósan),
  • 10-10% eséllyel jobbra vagy balra,
  • 20-20% eséllyel lefelé, azon belül jobbra vagy balra (átlósan),
  • 30% eséllyel lefelé, függőlegesen,
  • felfelé, függőlegesen nem mozog.

Az esélyek összege 100%. Másképpen kulcsszavakban: 1 = biztos esemény (teljes eseménytér, nincs más lehetőség), egymást kizáró események, geometriai valószínűség. A képen középen lévő hópehely a 8 szomszédja közül a 7 szóba jöhető közül valamelyikre adott eséllyel mozog. A geometriai valószínűséget az ábra alapján az óramutató járásával megegyezően leképeztük az 1..100 intervallumra:

A move() metódus megvalósítja a fenti tervnek megfelelően a hópehely mozgatását. Első lépésben tudni kell a jelenlegi/kiinduló location helyét (a bal felső csúcs, elkérjük). Ezután véletlenszerű esély/ tip generálódik. Az első elágazásban a hópehely translate() metódusával eltoljuk az előbb elkért pontot. Az eltolás relatív. Az utolsó elágazásban kompenzálunk, ha a hópehely alul kilépne a területről. Ekkor felül újra belép a területre. Végül beállítjuk a hópelyhet megvalósító komponenst a manipulált location helyre.

Takarékosak vagyunk: ezzel a megoldással „újrahasznosítjuk” a hópelyheket. Csak annyi van belőlük, amennyi szükséges. Nem kell őket folyamatosan megszüntetni és újra létrehozni. Nem mozognak feleslegesen. Nem mozognak olyan területen, ahol nem láthatóak.

Ötletek továbbfejlesztésre

  • A hópelyhek színe lehetne véletlenszerű a fehér és a középszürke között. Ezzel a nézőtől való távolságot, esetleg a kép élességét lehetne modellezni.
  • A szél nem feltétlenül szimmetrikus, vagy a hópelyhek mozgatását meg lehetne oldani jobbra és balra eltérő eséllyel is.
  • A terület lehetne más alakú, például trapéz, íves, kör, ellipszis.
  • Másképpen is vezérelhetnénk a szimulációt. Ahelyett, hogy most minden hópehelynek van saját időzítője, lehetne csak 5 db (lassabbak és gyorsabbak), amelyek közül véletlenszerűen kiválaszthatnánk, hogy melyik hatására mozgatjuk az adott hópelyhet. Fordítva is mehetne: az 5 db időzítőhöz előre hozzárendelhetnénk a hópelyheket. Ez így más-más felelősség, kommunikáció, üzenetküldés, vezérlés lenne az objektumok között. Hasznos tapasztalat lehet megvalósítani bármelyiket.
  • A terület lehetne egy nagyobb kép része. Például meghatározhatnánk egy tetszőleges átlátszóságot (színt vagy arányt) és többrétegű felületet megvalósítani képes JLayeredPane komponens elé vagy mögé is elhelyezhető lehetne a terület a grafikus felületen.
  • Aki kihívást keres: illessze a területet az alábbi hangulatos képre úgy, hogy a középső ablakok téglalap alakúak, a két szélső trapéz alakú vagy perspektivikus nézetű és a kör/ellipszis alakú tükörben pedig tükröződik valahonnan a hóesés látványa.
  • Még bátrabbaknak: a kandallóban lévő tüzet is lehet hasonlóan szimulálni. Itt már többféle fizikai paraméter is figyelembe vehető, például fényerősség, tükröződés. Egy 3D modellezett térben a sugárkövetés (Ray Tracing) algoritmus is megvalósítható. A hópelyheknél lehetne az egyszerű mozgástól eltérő más fizikát is programozni: rugalmas ütközéssel összetapadhatnának vagy rugalmatlan ütközéssel lepattanhatnának egymásról és mindez hathatna a sebességükre is.

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A Java SE szoftverfejlesztő tanfolyamunkon, a szakmai modul Objektumorientált programozás témakörét követő 29-36. óra Grafikus felhasználói felület alkalmain már tudunk egyszerűbb szimulációs programot tervezni, kódolni, tesztelni.

ASCII művészet Java-ban

ASCII Art 4

ASCII Art 1Átte­kint­jük a ka­rak­ter­a­la­pú raj­zo­lás le­he­tő­sé­ge­it Java 2D gra­fi­ká­val, illetve a ka­rak­ter­fü­zé­rek kép­ként va­ló ke­ze­lé­sé­nek újabb le­he­tő­sé­ge­it is.

Az ASCII művészet jelentése és kezdete

Az ábécék betűiből/szövegeiből kialakított ábrák egyidősek lehetnek az írásbeliséggel. A technológiától függetlenül a karakterekből kialakított kép megjeleníthető: papír és penna vagy írógép, illetve számítógép és nyomtató vagy monitor segítségével.
Az ASCII művészet (ASCII art) tágabb értelemben a szövegalapú vizuális művészetre vonatkozik. Szűkebb értelemben véve a számítógépes grafika részterületének tekinthető. Az ASCII művészet számítógépet használ nyomtatható standard ASCII kompatibilis karakterekből álló képek készítéséhez és megjelenítéséhez. A képeken a képi elemek a nyomtatható karakterek, amelyek a pointilizmushoz hasonló optikai effektust mutatnak.
A művészeti ág indulása arra vezethető vissza, hogy a korai nyomtatókkal nem lehetett grafikát nyomtatni, a monitorokon nem lehetett grafikát megjeleníteni. Cégek, programok bannerjeinek, logóinak készítésére pedig akkor is volt igény. Ezek mellett például prezentációkhoz, kapcsolási rajzokhoz is használták az ASCII művészetet, valamint természetesen a korai e-mailekben is. A grafikus kártyák megjelenése előtti időkben pedig a videójátékok „grafikája” is ezzel a technikával készült.
Most nézzünk meg néhány lehetőséget saját programmal való képkészítésre.

ASCII képek rajzolása programozási alapismeretek tanulásakor

Saját programmal már az alapok tanulásakor készíthetők ASCII képek a vezérlő szerkezetek megismerése kapcsán. Az alábbi képek bemutatják a lehetőségeket.

ASCII Art 2

További sok-sok kép található az alábbi weboldalakon:

A 2D grafikával való szövegrajzoláshoz használható BufferedImage osztály

A BufferedImage osztály a java.awt.image csomag része. Az Image osztály utódja. Hozzáférhető képadat-puffert tartalmaz, colorModel-ből és képadatok raster-éből áll. A raster sampleModel-jében a sávok számának és típusainak illeszkedniük kell a színt és átlátszó (alpha) komponenseket megadó colorModel által megkívánt számhoz és típusokhoz. A BufferedImage típusú objektumnak van bal felső koordinátája (0, 0), ezért a létrehozásához használt raster-nek kell legyen minX=0 és minY=0 értéke. A BufferedImage osztály a raster fetch és set metódusaira, valamint a colorModel színmódosítási módszereire támaszkodik.

Szöveg képként megjelenítése karakterekkel a konzolon

A kép méretét beállítjuk. A Graphics2D osztály drawString() metódusával String-et képként jeleníthetünk meg. Bár elég „munkás”, de Java-ban gyakran BufferedImage példány létrehozásával oldjuk ezt meg, és a Graphics példányt attól kérjük el. A Graphics2D osztály karakterfüzérek rajzolásakor egyszerű mátrixszerű technikát használ. A String-et kirajzoló mátrixrészek nullától különböző értéket kapnak. A megjelenítendő terület értékét egyszerű adatként, például int-ként kell megadnunk, nem RGB színértékekkel. Ehhez a képtípust int-módba állítottuk: BufferedImage.TYPE_INT_RGB. Az ASCII képek alapötlete az, hogy a képmátrix nem nulla indexeihez hozzárendelt értékeket a kívánt művészi karakterrel helyettesítjük. A nulla értékű mátrixindexeknek szóközt adunk. A nulla integer-módban -16777216-tal egyenlő. Ezután a Java 2D grafika haladó renderelő beállításainak használatához kasztoljuk a Graphics objektumot Graphics2D példánnyá. Majd beállítjuk a kívánt renderelési paramétereket, végül meghívjuk a drawString() metódust egy karakterlánccal.

Íme az elkészült szöveg/képernyőkép:

ASCII Art 3

A karakterek cserélgetésével a pozitív képből könnyen kaphatunk inverz/negatív képet is. A generált/renderelt képet fájlban is tárolhatjuk, például a javax.imageio.ImageIO osztállyal és adott a lehetőség a kép méretének megadására, a rajta megjelenő szöveg betűtípusának beállítására, háttérszín és szövegszín alkalmazására is.

A Java BufferedImage osztály néhány lehetőségének áttekintése után jó szórakozást kívánunk az ASCII képek létrehozásához, a lehetőségek további tanulmányozásához. Aki nem programból szeretne karakterekből/szövegekből felépülő képeket készíteni, használhat online alkalmazásokat is, például az Image to HTML/ASCII-t.

A bejegyzéshez tartozó teljes forráskódot ILIAS e-learning tananyagban tesszük elérhetővé tanfolyamaink résztvevői számára.

A feladat a Java SE szoftverfejlesztő tanfolyam szakmai moduljának 21-24. óra: Objektumorientált programozás, 2. rész alkalmához kötődik.