Programozói képszerkesztő - PDF ingyenes letöltés
4 Előkészítő feladat: a kép vízszintes elforgatása Ezt a feladatot az osztályban oldják meg. A cél a keretprogram, valamint a Picture és Pixel osztályok megismerése. Hozzon létre egy osztályt, amely vízszintesen elforgatja a képet: Vízszintesen elforgatott eredeti kép Használja az ImageVerticalMirror osztály másolatát. Ne felejtse el ezt az osztályt beilleszteni a képfeldolgozó program osztály fő programjába. Használhatja saját képeit is a megoldás teszteléséhez. 4

5 Példa programra: A vörös szín eltávolítása Sok programban, például az Adobe Photoshop, a Microsoft Powerpoint és még sok másban, a színeket gyakran vörös, zöld és kék komponensek keverékeként (RGB) adják meg. Minden színérték azon a tartományon belül van, amely 2 ^ 8 * 2 ^ 8 * 2 ^ 8 = 2 ^ 24 = lehetséges színt eredményez. Az RGB rövid bemutatása megtalálható a Wikipedia oldalon: Két online program a színek keveréséhez található: Tekintsünk egy programot, amely eltávolítja a kép piros színét: Az eredeti kép eltávolítja a pirosat A program változatlanul hagyja a kép felépítését: A koordináták nem kerülnek újraszámításra, mint a Tükörkép programhoz, hanem változatlanul kerülnek elfogadásra. A zöld és a kék színértékeit minden képpontra alkalmazzák, de a vörös mindig 0-ra van állítva: a BildRotEremen nyilvános osztály a BildEdeworkungInterface nyilvános képszerkesztést valósítja meg (kép eredeti képe) < int breite = originalbild.getwidth(); int hoehe = originalbild.getheight(); Picture neuesbild = new Picture(breite, hoehe); for (int y = 0; y 6 for (int x = 0; x 7 Vorbereitende Aufgabe: Rot und Grün vertauschen Diese Aufgabe wird in der Klasse gelöst. Ziel ist es, das Rahmenprogramm und die Klassen Picture und Pixel kennenzulernen. Schreiben Sie ein Programm, das für jeden Bildpunkt die Farben Rot und Grün vertauscht (oder ähnliche Farbveränderungen vornimmt): Originalbild Rot und grün vertauscht Verwenden Sie dazu eine Kopie der Klasse BildRotSpiegeln. Denken Sie daran, diese Klasse im Hauptprogramm in der Klasse BildBearbeitungsprogramm einzufügen. Sie können auch eigene Bilder verwenden, um Ihre Lösung zu testen. 7
8 Képfeldolgozás: Feladatok Oldja meg az öt feladat összesen három feladatát:> Oldja meg az 1. és a 2. feladatot. 2> Oldja meg a 3., 4., 5. feladat egyikét. 1. feladat: Forgassa el a képet 90, 180 és 270-rel. Írjon három képfeldolgozó programot: 1. 90-es forgatás jobbra [1 pont] 2. 180-as elforgatás (a középpontban történő tükrözésnek felel meg) [3 pont] 3. 270-es elforgatás jobbra (megfelel a bal oldali 90-es elforgatásnak) [1 pont] A fő program a A képfeldolgozó programosztály ekkor így néz ki: final String [] képfájlnevek = < "goldengate.jpg"; final BildBearbeitungInterface[] bildbearbeiter = < new Bild90GradDrehen(), new Bild180GradDrehen(), new Bild270GradDrehen(); Selbstverständlich können Sie auch andere Bilder verwenden! Achten Sie einfach darauf, dass die Bilder maximal ca. 600x600 Pixel gross sind. 8
9 2. gyakorlat: Színváltoztatások a képen 1. Írjon egy programot, amely a kép színeit szürkeárnyalattá alakítja: [2 pont] Eredeti kép Szürkeárnyalatos kép Szürkeárnyalatos háttérinformációk: Az RGB színek szürkeárnyalattá alakításának képlete: Te is Kísérletezzen a szürke értékek más képleteivel - a képtől függően egy másik formula egyértelműbb szürke értékeket biztosít. Ha színértékekkel számol, akkor a következő tippek lehetnek hasznosak: * A színértékek egész számok. Például, ha az egyes pixelek piros komponensét az eredeti érték 20% -ára szeretné beállítani, akkor a következőképpen számíthatja ki: int újabb piros érték = (int) (originalpixel.getred () * 0,2); newpixel.setred (újabb piros érték); Az originalpixel.getred () szorzata 0,2 = 20/100 értékkel úgynevezett lebegőpontos számot eredményez. Például, ha a pixel piros értéke 87, akkor az eredmény az lesz. De az új piros értékhez ismét egész számra van szükség. Az (int) megadása a = hozzárendelés után biztosítja, hogy a lebegőpontos számot egész számra konvertáljuk. Ebben a példában alternatív módon írhatja: 9
11 3. gyakorlat: A kép méretének felére csökkentése [5 pont] Írjon egy programot, amely a kép méretét felére, vízszintesen és függőlegesen felezi. Képméret felére csökkentve interpolációval Eredeti kép A négy pixeles kép egy képpontos képpé redukálódik: kép pixel előtt 1 pixel 2 kép pixel pixel 3 pixel 4 után Egyszerű megoldás az, hogy minden második oszlopot és minden második sort kihagy. A jobb felső sarokban található pixelek színei egyszerűen a bal felső sarokban látható 1. pixel színei lennének. A képminőség azonban jelentősen romlik. 1. Írjon egy programot, amely végrehajtja ezt az egyszerű eljárást. Kifinomultabb megoldás kiszámítja a jobb felső sarokban lévő ábra képpontjainak színeit, figyelembe véve az eredeti kép több pixelét, például figyelembe véve a bemutatott négy pixelt vagy mind a nyolc szomszédos pixelt. 2. Keressen egy módszert, amely az eredeti kép több képpontját használja a képminőség javítása érdekében. A legjobb, ha különböző képletekkel kísérletezik az új pixelek színének kiszámításához. 11.
12 4. gyakorlat: Színek megváltoztatása a helyzet függvényében [5 pont] Írjon egy programot, amely megváltoztatja a pixelek színértékét helyzetük függvényében. Például elrejthet egy színértéket balról jobbra, azaz folyamatosan csökkentheti az új színértéket a szélsőbal eredeti színértékének 100% -áról 0% -ra a jobb szélen: Az eredeti kép vörös komponense jobbra csökken Az ilyen képletek hasznosak az ilyen számításokhoz (az analóg képletek Y irányra használd): double deltax = orginalbild.getwidth () - orginalpixel.getx (); // milyen messze van a pixel a jobb éltől? dupla százalékdeltax = deltax/orginalbild.getwidth (); // A képpont távolsága a jobb éltől százalékban. Sötétítheti a képet középen is: 12
13 Eredeti kép A kép középen sötétebb. Hasznos képletek: kettős deltax = Math.abs (originalBild.getWidth ()/x); // milyen messze van a pixel a központtól? dupla százalékdeltax = 1 - deltax/(eredeti kép.getwidth ()/2,0); // mekkora a pixelek százaléka a középponttól? Sötétítheti a képet középponttól vízszintes és függőleges irányban is. Növelheti a kép fényerejét is leginkább a közepén, egyre kevésbé a kép széle felé. De a kép egy bizonyos részét is megváltoztathatja. Például, ha fényképet készítene egy vörös szemű személyről, csökkentheti a vörös értéket a vörös szem területén. A koordinátákat a keretprogram segítségével határozhatja meg. Kiválaszthatja, hogy melyik hatást szeretné kiszámítani! 13.
14 5. feladat: Kreatív képfeldolgozás [5 pont] A keretprogrammal kapott néhány képfeldolgozó effektust. Indítsa el az ImageEditingProgramAllEffects osztályt, hogy megtekinthesse a már megadott effektusokat. Itt van egy választás: Class ImageEdgeDiscover Class ImageSwirl Class ImageRotation (45 balra) Class ImageSgörgesse lefelé Szerkesztés az Effektusokkal ImageRedRemove és ImageVerticalMirror Keressen magának megfelelő képet, és írjon képfeldolgozó hatást, hogy az eredmény vizuálisan vonzó legyen a legtágabb értelemben! 14-én