Képkezelés java-ban I. rész
Kis elmélet
Jávában a képeket a java.awt.image.BufferedImage osztállyal tudjuk kezelni. Tehát ezt az osztályt mindenképpen be kell importálni az alkalmazásunkba:
import java.awt.image.BufferedImage;
A BufferedImage osztály hozzáférést enged a kép adataihoz, tulajdonságaihoz, mint például a pixelek, színek adatai, az egész kép mérete stb…
Kép beolvasása
Miel?tt bármit is tudnánk csinálni a képpel, el?ször is azt be kell olvasni a memóriába, pontosabban egy BufferedImage objektum példányba:
public static BufferedImage loadImage(String fname) {
BufferedImage img = null;
try {
img = ImageIO.read(new File(fname));
} catch(Exception e) {
e.printStackTrace();
}
return img;
}
A beolvasást az ImageIO osztály read metódusa végzi el, amely egy használatra kész BufferedImage osztály példányt ad számunkra. A függvény természetesen ezt adja vissza. Az esetleges olvasási hibákat a catch blokkban tetsz?leges módon lekezelhetjük. A metódus IllegalArgumentException illetve IOException kivételeket tud dobni.
A metódust tegyük bele egy osztályba, amibe gy?jtjük a képkezeléssel kapcsolatos kódot pl.: ImageUtility
Amit akár egy külön package-be is tehetünk.
Kép megjelenítése
Itt az ideje, hogy megjelenítsük a beolvasott képünket:
public class Kepmegjelenito {
public static void main(String[] args) {
Kepmegjelenito kepm = new Kepmegjelenito();
JFrame frame = new JFrame("Képmegjelenít?");
frame.setVisible(true);
BufferedImage img = ImageUtility.loadImage("C:/foto.jpg");
frame.setBounds(0, 0, img.getWidth(), img.getHeight());
Graphics2D g = (Graphics2D)frame.getRootPane().getGraphics();
g.drawImage(img, null, 0, 0);
}
}
A képet megjeleníthetjük JPanel, JFrame illetve Canvas osztályokon, amelyek tartalmaznak saját Graphics objektumot.Én ebben az estben a JFrame -et választottam, az egyszer?ség kedvéért.
kód létrehoz egy frame-et, majd láthatóra is állítja, ami nagyon fontos még az elején, különben a beolvasott kép nem fog megjelenni. Ezután beolvassuk a képet a cikk elején tárgyalt ImageUtility osztály loadImage metódusával, ami létre is hozza a BufferedImage objetumot. Kiolvassuk bel?le a kép méreteit “getWidth” ill. “getHeight” , hogy a frame méretét ekkorára be tudjuk állítani.
A végén pedig lekérjük a frame Graphics objektumának referenciáját, és a drawImage metódusa segítségével megjelenítjük a képet.
Folyt köv.
Comments:
You must be logged in to post a comment.