Knihovna AWH (pokračování)
- Java poskytuje funkce pro obrovské množství oblastí (zvuk, GUI, atd.)
- ale jejich použití vyžaduje hlubší pochopení vztahů mezi různými třídami, rozhraními apod.
- abychom si mohli vyzkoušet něco zajímavějšího, lze použít knihovnu
awh.jar
, která
tyto funkce zpřístupní jednodušším způsobem
- nevýhodou je, že AWH je relativně pomalá, protože přidává vrstvy navíc
- budeme se tvářit, že nám to nevadí ;-)
Stažení
- k dispozici je zde
- pokud něco nebude fungovat, ujistěte se, že máte poslední verzi (stáhněte znovu)
Testovací obrázky
Vytvoření prázdného obrázku
public class Prazdny {
public static void main(String[] args) {
awh.Image obr = awh.Image.createEmpty(50, 50, awh.Color.GREEN);
obr.saveToFile("zeleny.png");
}
}
javac -cp awh.jar Prazdny.java
java -cp .;awh.jar Prazdny // Windows
java -cp .:awh.jar Prazdny // Unix
Převod obrázků
public class Prevod {
public static void main(String[] args) {
awh.Image obr = awh.Image.loadFromFile(args[0]);
System.out.printf("Velikost %s: %dx%d\n",
args[0],
obr.getWidth(),
obr.getHeight()
);
obr.saveToFile(args[1]);
}
}
javac -cp awh.jar Prevod.java
java -cp .;awh.jar Prevod obrazek1.jpg vystup.png // Windows
java -cp .:awh.jar Prevod obrazek1.jpg vystup.png // Unix
Vytvoření dvojobrázku
public class Dvojobrazek {
public static void main(String[] args) {
int sirka = 300;
int vyska = 150;
awh.Image levy = awh.Image.loadFromFile(args[0]);
awh.Image pravy = awh.Image.loadFromFile(args[1]);
levy.rescale(sirka, vyska);
pravy.rescale(sirka, vyska);
awh.Image vysledek = awh.Image.createEmpty(sirka * 2, vyska, awh.Color.BLACK);
vysledek.pasteFrom(levy, 0, 0);
vysledek.pasteFrom(pravy, sirka, 0);
vysledek.saveToFile(args[2]);
}
}
Práce s jednotlivými pixely a barvou
- barva je typu
awh.Color
, vytváří se pomocí RGB notace
- hodnoty v rozsahu 0 - 255 (1 bajt na barevnou složku)
public class Modrani {
public static void main(String[] args) {
awh.Image obr = awh.Image.loadFromFile(args[0]);
int sirka = obr.getWidth();
int vyska = obr.getHeight();
for (int y = 0; y < vyska; y++) {
for (int x = 0; x < sirka; x++) {
awh.Color puvodni = obr.getPixel(x, y);
awh.Color nova = awh.Color.fromRgb(
0,
0,
puvodni.getBlue()
);
obr.setPixel(x, y, nova);
}
}
obr.saveToFile(args[1]);
}
}