Programare Image Editor - Descărcare gratuită PDF
4 Sarcină pregătitoare: răsturnarea imaginii pe orizontală Această sarcină este rezolvată în clasă. Scopul este de a cunoaște programul-cadru și clasele Picture și Pixel. Creați o clasă care întoarce o imagine orizontal: Original Image Flipped Horizontally Utilizați o copie a clasei ImageVerticalMirror. Nu uitați să inserați această clasă în programul principal în clasa de editare a imaginilor. De asemenea, puteți utiliza propriile imagini pentru a testa soluția. Al 4-lea

5 Eșantion de program: eliminați culoarea roșie Culorile sunt utilizate în multe programe, cum ar fi Adobe Photoshop, Microsoft Powerpoint și multe altele. adesea administrat ca un amestec de componente roșii, verzi și albastre (RGB). Fiecare valoare a culorii se află în intervalul care duce la 2 ^ 8 * 2 ^ 8 * 2 ^ 8 = 2 ^ 24 = culori posibile. O scurtă introducere a RGB poate fi găsită la Wikipedia: Două programe online pentru amestecarea culorilor pot fi găsite în: Să luăm în considerare un program care elimină culoarea roșie dintr-o imagine: Imaginea originală elimină roșu Programul lasă structura imaginii neschimbată: Coordonatele nu sunt recalculate ca la programul Mirror Image, dar sunt adoptate neschimbate. Valorile culorilor verde și albastru sunt adoptate pe fiecare pixel, dar roșul este întotdeauna setat la 0: clasa publică BildRotEremen implementează BildEdereitungInterface editare imagine publică (imagine imagine originală) < 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 Prelucrarea imaginilor: Sarcini Rezolvați în total trei sarcini din cele cinci sarcini:> Rezolvați sarcina 1 și sarcina 2. 2> Rezolvați una dintre sarcinile 3, 4, 5. Sarcina 1: Rotiți imaginea cu 90, 180 și 270 Scrieți trei programe de procesare a imaginilor: 1. Rotație cu 90 la dreapta [1 punct] 2. Rotație cu 180 (corespunde reflexiei punctului în centru) [3 puncte] 3. Rotație cu 270 la dreapta (corespunde rotației cu 90 la stânga) [1 punct] Programul principal din Clasa programului de procesare a imaginii arată astfel: final String [] nume de fișiere imagine = < "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 Exercițiul 2: Efectuarea modificărilor de culoare ale imaginii 1. Scrieți un program care transformă culorile unei imagini în tonuri de gri: [2 puncte] Imagine originală Imagine în tonuri de gri Informații de fundal pe tonuri de gri: Formula pentru conversia culorilor RGB în tonuri de gri: Puteți, de asemenea, să Experimentați cu alte formule pentru valorile de gri - în funcție de imagine, o formulă diferită oferă valori de gri mai clare. Dacă calculați cu valori de culoare, următoarele sfaturi pot fi utile: * Valorile de culoare sunt numere întregi. De exemplu, dacă doriți să setați componenta roșie a fiecărui pixel la 20% din valoarea inițială, o puteți calcula astfel: int valoare roșie mai nouă = (int) (originalpixel.getred () * 0.2); newpixel.setred (valoare roșie mai nouă); Înmulțirea originalpixel.getred () cu 0,2 = 20/100 oferă un rezultat așa-numitul număr în virgulă mobilă. De exemplu, dacă valoarea roșu a pixelului ar fi 87, rezultatul ar fi. Dar pentru noua valoare roșie aveți nevoie din nou de un număr întreg. Specificația lui (int) după atribuirea cu = asigură faptul că numărul virgulă mobilă este convertit într-un număr întreg. În acest exemplu, puteți scrie alternativ: 9
11 Exercițiul 3: Înjumătățiți dimensiunea imaginii [5 puncte] Scrieți un program care înjumătățește dimensiunea unei imagini, orizontal și vertical. Dimensiunea imaginii înjumătățită cu interpolare Imagine originală O imagine cu patru pixeli ar fi redusă la o imagine cu un pixel: imagine înainte de pixel 1 pixel 2 imagine după pixel pixel 3 pixel 4 O soluție simplă este de a omite fiecare a doua coloană și fiecare a doua linie. Culorile pixelilor din ilustrația din dreapta sus ar fi apoi pur și simplu culorile pixelului 1 din ilustrația din stânga sus. Cu toate acestea, calitatea imaginii suferă considerabil. 1. Scrieți un program care implementează această procedură simplă. O soluție mai sofisticată calculează culorile pixelilor din figura din dreapta sus, ținând cont de mai mulți pixeli din imaginea originală, de exemplu luând în considerare cei patru pixeli afișați sau luând în considerare toți cei opt pixeli vecini. 2. Găsiți o metodă care utilizează mai mulți pixeli din imaginea originală pentru a îmbunătăți calitatea imaginii. Cel mai bun mod de a face acest lucru este să experimentați diferite formule pentru calcularea culorilor noilor pixeli. 11
12 Exercițiul 4: Schimbați culorile în funcție de poziție [5 puncte] Scrieți un program care modifică valorile culorilor pixelilor în funcție de poziția lor. De exemplu, puteți ascunde o valoare a culorii de la stânga la dreapta, adică reduceți continuu noua valoare a culorii de la 100% din valoarea originală a culorii din extrema stângă la 0% în extrema dreaptă: Componenta roșie a imaginii originale este redusă la dreapta Următoarele formule sunt utile pentru astfel de calcule (puteți utiliza formule analogice pentru direcția Y): deltax dublu = orginalbild.getwidth ( ) - orginalpixel.getx (); // cât de departe este pixelul de la marginea din dreapta? double percentdeltax = deltax/orginalbild.getwidth (); // Distanța pixelului de la marginea dreaptă în procente De asemenea, puteți închide o imagine din centru: 12
13 Imagine originală Imagine întunecată din centru Formule utile: deltax dublu = Math.abs (originalBild.getWidth ()/x); // cât de departe este pixelul de centru? double percentdeltax = 1 - deltax/(originalbild.getwidth ()/2.0); // care este procentul de pixeli distanță de centru? De asemenea, puteți întuneca imaginea în direcțiile orizontale și verticale din centru. De asemenea, ați putea crește luminozitatea unei imagini cel mai mult în mijloc, din ce în ce mai puțin spre marginea imaginii. Dar puteți schimba doar o anumită secțiune a imaginii. De exemplu, dacă ar fi să fotografiați o persoană cu ochi roșii, ați putea reduce valoarea roșie în zonele ochi roșii. Puteți determina coordonatele cu ajutorul programului cadru. Puteți alege ce efect doriți să calculați! 13
14 Sarcina 5: Procesarea imaginii creative [5 puncte] Cu programul cadru ați primit câteva efecte de procesare a imaginii. Porniți clasa ImageEditingProgramAllEffects pentru a vizualiza toate efectele care au fost deja specificate. Iată o selecție: Class ImageEdgeDiscover Class ImageSwirl Class ImageRotation (45 spre stânga) Class Images Derulați în jos Editarea cu efectele ImageRedRemove și ImageVerticalMirror Găsiți personal o imagine adecvată și scrieți un efect de procesare a imaginii, astfel încât rezultatul să fie atractiv din punct de vedere vizual în sensul cel mai larg! 14