March 2008
M T W T F S S
    Apr »
 12
3456789
10111213141516
17181920212223
24252627282930
31  




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.

Képkezelés java-ban II. rész

19 March 2008 | Uncategorized | Comments

Comments:

You must be logged in to post a comment.