Java - Práce s obrázky (66.díl)

Napsal O webu (») 26. 10. 2008 v kategorii Programování, přečteno: 3622×
obrazky/java_logo.png

Dokončení a příkladu z minulého dílu

Upravený rastr následně uložíme

public void savePicture()
{
File soubor=new File("C::\\Temp\\Pokus.jpg");
try
{
ImageIO.write(im, "jpg", soubor);
}
catch (Exception e)
{
e.printStackTrace();
}
}

Pro zorazení používáme metodu drawImage(), velikost rastru nastavíme stejnou jako velikost JPanelu, na které vykreslení rastru provádíme. Pro nastavení velikosti použijeme explicitní konstruktor.

public class Obrazek extends JComponent{
private int width, height;
private URL url;
private BufferedImage im;
public Obrazek(int width, int heigth)
{
this.width=width;
this.height=heigth;
}
public void loadPicture()
{
try
{
url=new URL("http://www.natur.cuni.cz/gis/tomas/1.jpg");
im=ImageIO.read(url);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void editPicture()
{
for (int i=0;i<im.getWidth();i++)
{
for (int j=0;j<im.getHeight();j++)
{
int c=im.getRGB(i,j);
int red = (c & 0x00ff0000) > > 16;
int green = (c & 0x0000ff00) > > 8;
int blue = c & 0x000000ff;
red=red/3;
blue=blue/3;
Color ce=new Color(red,green,blue);
im.setRGB(i,j,ce.getRGB());
}
}
}
public void savePicture()
{
File soubor=new File("C::\\Temp\\Pokus.jpg");
try
{
ImageIO.write(im, "jpg", soubor);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void paintComponent(Graphics g)
{
g.drawImage(im,0,0, width,height, this);
}
}

Nyní vytvoříme formulář s grafckým návrhem, rastr zobrazíme v JPanelu.

public class MainObrazek extends JFrame {
public MainObrazek(int width, int height) {
this.setSize(width, height);
this.setTitle("Obrazek");
JPanel p=new JPanel();
p.setLayout(new BorderLayout());
Obrazek o=new Obrazek(width, height);
o.loadPicture();
o.editPicture();
p.add(o);
this.getContentPane().add(p);
this.setVisible(true);
}
public static void main(String [] arg)
{
new MainObrazek(400,400);
}
}



Autor: Filip Koval
Štítky: Java
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel devět a šest