rendered paste body
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.net.*;
import javax.swing.*;
import javax.imageio.*;
public class Uppgift3e extends JApplet
{
class NegativFilter extends ImageFilter
{
public void setPixels(int x, int y, int w, int h, ColorModel model,
int[] pixels, int off, int scansize)
{
int[] compo = new int[4];
// int[] pixels2 = new int[w * h];
int index;
for (int i=x; i<w; i++)
for (int j=y; j<h; j++)
{
index = i + (j*scansize) + off;
compo = model.getComponents(pixels[index], compo, 0);
compo[0] = 255 - compo[0];
compo[1] = 255 - compo[1];
compo[2] = 255 - compo[2];
pixels[index] = (int) model.getDataElement(compo, 0);
// pixels2[index] = (int) model.getDataElement(compo, 0);
}
// pixels = pixels2;
}
}
private JPanel canvas = new JPanel()
{
public void paintComponent(Graphics g)
{
paintCanvas(g);
}
};
private Image original;
private Image temp;
public void init()
{
try
{
original = ImageIO.read(new URL(getCodeBase(), "rapist.jpg"));
temp = original;
}
catch (Exception e)
{
fel(e);
}
setLayout(new BorderLayout());
JPanel topp = new JPanel(new FlowLayout(FlowLayout.CENTER));
JButton invertera = new JButton("Invertera");
invertera.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
uppdatera(new NegativFilter());
}
});
JButton återställ = new JButton("Återställ");
återställ.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
}
});
JButton gråtona = new JButton("Gråtona");
gråtona.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
}
});
topp.add(invertera);
topp.add(återställ);
topp.add(gråtona);
add("North", topp);
add("Center", canvas);
JPanel botten = new JPanel(new FlowLayout(FlowLayout.CENTER));
JButton filter1 = new JButton("Filter #1");
filter1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
}
});
JButton filter2 = new JButton("Filter #2");
filter2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
}
});
JButton filter3 = new JButton("Filter #3");
filter3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
}
});
botten.add(filter1);
botten.add(filter2);
botten.add(filter3);
add("South", botten);
}
private void uppdatera(ImageFilter filter)
{
ImageProducer ip = temp.getSource();
FilteredImageSource f = new FilteredImageSource(ip, filter);
temp = createImage(f);
canvas.repaint();
}
private void paintCanvas(Graphics g)
{
int w = canvas.getWidth();
int h = canvas.getHeight();
if (temp == null)
{
g.setColor(Color.white);
g.fillRect(0, 0, w, h);
return;
}
g.drawImage(temp, 0, 0, w, h, this);
System.out.println("hej");
}
private void fel(Exception e)
{
e.printStackTrace();
System.exit(0);
}
}