Програмирање уредник на слики - PDF бесплатно преземање
4 Подготвителна задача: превртување на сликата хоризонтално Оваа задача е решена на час. Целта е да се запознаат рамковната програма и часовите Слика и Пиксел. Создадете класа што превртува слика хоризонтално: оригинална слика превртена хоризонтално Користете копија од класата ImageVerticalMirror. Не заборавајте да ја вметнете оваа класа во главната програма во класата на програмата за уредување на слики. Можете исто така да користите свои слики за да го тестирате вашето решение. 4-ти

5 Пример програма: Отстрани црвена боја Во многу програми како што се Adobe Photoshop, Microsoft Powerpoint и многу други, боите често се специфицираат како мешавина од црвена, зелена и сина компонента (RGB). Секоја вредност на бојата е во опсегот што резултира со 2 ^ 8 * 2 ^ 8 * 2 ^ 8 = 2 ^ 24 = можни бои. Краток вовед во RGB може да се најде на Википедија: Две програми за мешање на бои може да се најдат под: Да разгледаме програма што ја отстранува црвената боја од сликата: Оригиналната слика ја отстранува црвената Програмата ја остава структурата на сликата непроменета: Координатите не се пресметуваат како со Mirror Image програмата, но се усвојуваат непроменети. Вредностите на бојата на зелената и сината се усвојуваат на секој пиксел, но црвената боја секогаш е поставена на 0: јавната класа BildRotEremen спроведува уредување на јавната слика BildEdereitungInterface (оригинална слика на слика) < 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 Обработка на слика: Задачи Решете вкупно три задачи од петте задачи:> Решете ги задачите 1 и задачите 2. 2> Решете една од задачите 3, 4, 5. Задача 1: Свртете ја сликата за 90, 180 и 270 Напишете три програми за обработка на слики: 1. Ротација 90 надесно [1 точка] 2. Ротација 180 (одговара на пресликување на точка во центарот) [3 поени] 3. Ротација 270 надесно (одговара на ротација 90 налево) [1 точка] Главната програма во Класата на програмата за обработка на слики тогаш изгледа вака: конечно Стринг [] имиња на датотеки со слики = < "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: Правење промени во бојата на сликата 1. Напишете програма што ги претвора боите на сликата во сива скала: [2 поени] Оригинална слика Слика во сива боја Информации за позадина за сива скала: Формула за претворање на RGB бои во сива скала: Можете и вие Експериментирајте со други формули за сивите вредности - во зависност од сликата, друга формула обезбедува појасни сиви вредности. Ако пресметувате со вредностите на бојата, следниве совети можат да бидат корисни: * Вредностите на бојата се цели броеви. На пример, ако сакате да ја поставите црвената компонента на секој пиксел на 20% од оригиналната вредност, можете да ја пресметате на следниов начин: int понова црвена вредност = (int) (originalpixel.getred () * 0.2); newpixel.setred (понова црвена вредност); Множењето на originalpixel.getred () со 0,2 = 20/100 обезбедува таканаречен број на подвижна точка како резултат. На пример, ако црвената вредност на пикселот беше 87, резултатот ќе беше.Но, за новата црвена вредност, повторно е потребен цел број. Спецификацијата на (int) по доделувањето со = гарантира дека бројот на подвижна точка е претворен во цел број. Во овој пример можете алтернативно да напишете: 9
11 Вежба 3: Преполови ја големината на сликата [5 поени] Напиши програма што ја преполовува големината на сликата, хоризонтално и вертикално. Големина на слика преполовена со интерполација Оригинална слика Слика со четири пиксели ќе се сведе на слика со еден пиксел: слика пред пиксел 1 пиксел 2 слика по пиксел пиксел 3 пиксел 4 Едноставно решение е да се изостави секоја втора колона и секоја втора линија. Боите на пикселите во горната десна илустрација тогаш едноставно би биле боите на пикселот 1 во горната лева илустрација. Сепак, квалитетот на сликата значително страда. 1. Напишете програма што ја спроведува оваа едноставна постапка. Пософистицирано решение ги пресметува боите на пикселите на сликата горе десно, земајќи предвид неколку пиксели на оригиналната слика, на пример земајќи ги предвид прикажаните четири пиксели или земајќи ги предвид сите осум соседни пиксели. 2. Пронајдете метод што користи повеќе пиксели од оригиналната слика за да го подобри квалитетот на сликата. Најдобар начин да го направите ова е да експериментирате со различни формули за пресметување на боите на новите пиксели. 11
12 Вежба 4: Променете ги боите во зависност од положбата [5 поени] Напишете програма што ги менува вредностите на боите на пикселите во зависност од нивната позиција. На пример, можете да скриете вредност на бојата одлево надесно, т.е. континуирано да ја намалувате новата вредност на бојата од 100% од оригиналната вредност на бојата крајно лево на 0% крајно десно: Црвената компонента на оригиналната слика се намалува надесно Следните формули се корисни за вакви пресметки (аналогни формули можат Користете го за Y насока): двојна делтакс = orginalbild.getwidth () - orginalpixel.getx (); // колку е далеку пикселот од десниот раб? двоен процентделтакс = делтакс/оригинално билд.двојна ширина (); // Растојание на пикселот од десниот раб во проценти Можете исто така да затемните слика од центарот: 12
13 Оригинална слика Сликата е потемна од центарот Корисни формули: двоен делтакс = Math.abs (originalBild.getWidth ()/x); // колку е оддалечен пикселот од центарот? двоен процентделтакс = 1 - делтакс/(оригинал. билт. ширина ()/2,0); // колкав е процентот на пиксели подалеку од центарот? Можете исто така да ја затемните сликата во хоризонтална и вертикална насока од центарот. Вие исто така може да ја зголемите осветленоста на сликата најмногу во средина, сè помалку кон работ на сликата. Но, вие исто така можевте да промените само одреден дел од сликата. На пример, ако фотографирате лице со црвени очи, може да ја намалите црвената вредност во областите на црвените очи. Можете да ги одредите координатите со помош на рамковната програма. Можете да изберете кој ефект сакате да го пресметате! 13-ти
14 Задача 5: Креативна обработка на слика [5 поени] Со рамковната програма добивте некои ефекти за обработка на слика. Започнете ја класата ImageEditingProgramAllEffects за да ги видите сите ефекти што се веќе наведени. Еве избор: Класа ImageEdgeDiscover Class ImageSwirl Class ImageRotation (45 лево) Слики од класа Скролувајте надолу Уредување со ефекти ImageRedRemove и ImageVerticalMirror Пронајдете соодветна слика сами и напишете ефект на обработка на слики за резултатот да биде привлечен во најширока смисла! 14-ти