Програмиране на Image Editor - PDF Безплатно изтегляне

4 Подготвителна задача: обръщане на картината хоризонтално Тази задача се решава в клас. Целта е да опознаете рамковата програма и класовете Picture и Pixel. Създайте клас, който обръща изображение хоризонтално: Original Image Flipped Horizontally Използвайте копие на класа ImageVerticalMirror. Не забравяйте да вмъкнете този клас в основната програма в класа на програмата за обработка на изображения. Можете също да използвате свои собствени снимки, за да тествате решението си. 4-ти

програма която

5 Примерна програма: Премахване на червения цвят Цветовете се използват в много програми като Adobe Photoshop, Microsoft Powerpoint и много други. често се дава като смес от червени, зелени и сини компоненти (RGB). Всяка стойност на цвета е в диапазона, който води до 2 ^ 8 * 2 ^ 8 * 2 ^ 8 = 2 ^ 24 = възможни цветове. Кратко въведение в RGB можете да намерите в Wikipedia: Две онлайн програми за смесване на цветове могат да бъдат намерени в: Нека разгледаме програма, която премахва червения цвят от изображение: Оригиналното изображение премахва червеното Програмата оставя структурата на изображението непроменена: Координатите не се преизчисляват както при програмата Mirror Image, но се приемат непроменени. Стойностите на цвета на зелено и синьо се прилагат към всеки пиксел, но червеното винаги е зададено на 0: публичен клас BildRotEremen прилага BildEdeworkungInterface редактиране на публична картина (снимка оригинална снимка) < 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 точка] Основната програма в Тогава класът на програмата за обработка на изображения изглежда така: final String [] image filename = < "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 (); // колко далеч е пикселът от десния ръб? двоен процентdeltax = deltax/orginalbild.getwidth (); // Разстояние на пиксела от десния ръб в проценти. Можете също така да затъмните изображение от центъра: 12

13 Оригинално изображение Изображението е по-тъмно от центъра Полезни формули: двоен делтакс = Math.abs (originalBild.getWidth ()/x); // колко далеч е пикселът от центъра? двоен процент делтакс = 1 - делтакс/(originalbild.getwidth ()/2.0); // какъв е процентът на пикселите от центъра? Можете също така да затъмните изображението хоризонтално и вертикално от центъра. Можете също така да увеличите яркостта на картината най-много в средата, все по-малко към ръба на картината. Но можете също така да промените само определен раздел от изображението. Например, ако трябва да направите снимка на човек с червени очи, можете да намалите стойността на червените в зоните на червени очи. Можете да определите координатите с помощта на рамковата програма. Можете да изберете кой ефект искате да изчислите! 13

14 Упражнение 5: Творческа обработка на изображения [5 точки] С рамковата програма сте получили някои ефекти за обработка на изображения. Стартирайте класа ImageEditingProgramAllEffects, за да видите всички вече посочени ефекти. Ето една селекция: Class ImageEdgeDiscover Class ImageSwirl Class ImageRotation (45 вляво) Class ImagesSecondaryEditing with the Effects ImageRedRemove и ImageVerticalMirror Намерете сами подходящо изображение и напишете ефект на обработка на изображения, така че резултатът да бъде привлекателен визуално в най-широкия смисъл! 14-ти