import java.applet.*; import java.awt.*; import java.awt.image.*; public class blurimage extends Applet { //"blueimage" kommer att hålla reda på //bilden som vi skapar. Image image=null; public void init() { //Ladda in bilden (filnamnet finns i //parametern "image"). MediaTracker tracker=new MediaTracker(this); image=getImage(getDocumentBase(),getParameter("image")); tracker.addImage(image,0); try {tracker.waitForAll();} catch(InterruptedException e){} //Nu anropar vi metoden blurImage() //för att göra bilden suddig. image=blurImage(image); } public Image blurImage(Image img) { //Skapa en array för att lagra bildens pixlar och //hämta dem. Dimension d=new Dimension(img.getWidth(this),img.getHeight(this)); int pixels[]=new int[d.width*d.height]; PixelGrabber grabber =new PixelGrabber(img,0,0,d.width,d.height,pixels,0,d.width); try {grabber.grabPixels();} catch(InterruptedException e){}; //Variabeln "div" används för att dividera //summan av alla komponenterna. int div; //Det är bäst att vi först skapar tre //arrayer för att lagra färgkomponenterna //så att bildbehandlingen snabbas upp. //Storleken på dessa arrayer måste vara //samma som antalet pixlar i bilden. int lr[]=new int[d.width*d.height]; int lg[]=new int[d.width*d.height]; int lb[]=new int[d.width*d.height]; //Vi använder en enkel FOR-slinga för att //gå lagra varje komponent. for (int index=0; index>16; lg[index]=(pixels[index]&0xff00)>>8; lb[index]=pixels[index]&0xff; } //Vi använder två FOR-slingor för bildbehandlingen //den här gången. int r,g,b; for (int x=0; x0) { //Lägg till pixeln till vänster //om pixeln i mitten. r+=lr[(x-1)+y*d.width]; g+=lg[(x-1)+y*d.width]; b+=lb[(x-1)+y*d.width]; div++; if (y>0) { //Lägg till pixeln ovanför //och längst upp till vänster //om pixeln i centrum. r+=lr[x+(y-1)*d.width]; g+=lg[x+(y-1)*d.width]; b+=lb[x+(y-1)*d.width]; r+=lr[(x-1)+(y-1)*d.width]; g+=lg[(x-1)+(y-1)*d.width]; b+=lb[(x-1)+(y-1)*d.width]; div+=2; } if (y0) { //Lägg till pixeln längst //upp till höger //om pixeln i centrum. r+=lr[(x+1)+(y-1)*d.width]; g+=lg[(x+1)+(y-1)*d.width]; b+=lb[(x+1)+(y-1)*d.width]; div++; } if (y