Dokončení a příkladu z minulého dílu
Upravený rastr následně uložímepublic 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