Korszerű Információs Rendszerek
Beadandó feladat
Feladat megoldáshoz névkonvenciók:
Kód: neptunkod.c Kép: final.bmp
A programoknak egy szálon kell futniuk. A lényegi algoritmushoz AVX2-t kell használni.
A 192.168.110.3 gépen kell futniuk a programoknak, ott lesznek ellenőrizve. Fordításuk minden esetben a gcc "forras.c" -o "binaris" -mavx2 paranccsal fog történni.
Ezen a gépen megtalálható a feladatokhoz szükséges windows.bmp és arrow.bmp a gyökérben.
A következő feladatokat kell megoldani:
- Adott két BMP file (ami egy tömörítetlen képformátum): arrow.bmp, windows.bmp. A mellékelt bitmapben a 0x36 byte-tól kezdve vannak tárolva a pixeladatok BGR (3*8bit) egeszen a file végéig. A memóriában eredményként létrejött bitmap-et mentse el "final.bmp" néven. Ügyeljen arra, hogy a kimeneti BMP file header-jében a felbontást is helyesen kell beállítani!
Bitmap formátum
Készítsen egy programot (1 db .c file) amely a következő műveleteket hajtja végre:
- Töltse be az arrow bitmapet!
- Az arrow bitmap mérete 2048x1024 pixel, ezért ezt kicsinyítse le 1024x1024-re úgy, hogy vertikálisan (EGYMÁS ALATTI pixelekre nézve) az értékeket átlagolja!
- Az átméretezett arrow bitmap minden pixelének színét invertálja (cserélje ki az inverzére: fehér -> fekete, fekete -> fehér)!
- Töltse be a windows bitmapet is!
- Az átalakított (lekicsinyített és invertált) arrow bitmap fekete részét (a hátteret ne, csak a fekete pixeleket. Ha az invertálás után úgy jön ki, lehet az 1-es értékeket is feketének venni, nem csak a teljesen fekete 0 értéket) helyezze rá a windows bitmapre!
Az eredmény a windows bitmap értékeit tartalmazza ott, ahol az arrow bitmap nem fekete, a fekete részeket pedig az arrow bitmapből tartsa meg!
- Az eredményt mentse le final.bmp néven!
A betöltött képen nem szükséges minden műveletet pontosan ebben a sorrendben végrehajtani és a köztes állapotokat lementeni, csak a végső (final.bmp) állapotot kell a programnak létrehoznia.
A programok futási idejének mérését én végzem olyan módon, hogy a "time ./binaris" parancsot futtatom le. Ez automatikusan megmutatja a program indítása és vége közötti időtartamot, így azt nem szükséges a programkódon belül semmilyen módon mérni.
A kész feladatot (1 db c forráskód, melynek neve mindenkinek a saját neptun kódja) Soós Róbertnek kell elküldeni e-mailben (robert.soos@uni-miskolc.hu), legkésőbb november 8. (péntek) 23:59-ig. Szükség esetén e-mailben lehet segítséget kérni.