//albnegruFilter1.java import java.applet.*; import java.awt.*; import java.awt.image.*; public class albnegruFilter1 extends Applet { Image img,imgn,histo; Graphics g; int dimlat,dimin; //dimensiuni imagine img int lat,inalt; //dimensiuni imgn String valoare="128"; Panel p=new Panel(); Label lbl=new Label("Valoare intre 0 si 255:"); List lstT=new List(1,false); Button ok=new Button("OK"); public void init() { Color culoare=new Color(100,100,50); setBackground(culoare); String imaginea=getParameter("imagine"); if (imaginea==null) imaginea="Andreea1.jpg" ; img=getImage(getCodeBase(), imaginea); dimlat=img.getWidth(this); dimin=img.getHeight(this); imgn=img; // MemoryImageSource mis; Image rimg; for (int i=0;i<52;i++) lstT.addItem(String.valueOf(5*i)); lstT.makeVisible(25); lstT.select(25); setLayout(new BorderLayout()); p.add(new Button("Albnegru 1")); p.add(new Button("Albnegru 2")); p.add(new Button("Binar")); p.add(lbl); p.add(lstT); p.add(ok); lstT.disable(); lbl.disable(); ok.disable(); add("North",p); } public boolean action(Event evt, Object ob) { Graphics g=getGraphics(); g.clearRect(60,100+dimin,60+lat,100+dimin+inalt); g.dispose(); if (evt.target instanceof Button) { if (ob.equals("Albnegru 1")) { lstT.disable(); lbl.disable(); ok.disable(); albnegru1 rim5=new albnegru1(img); imgn=rim5.rimg; } else if (ob.equals("Albnegru 2")) { lstT.disable(); lbl.disable(); ok.disable(); ImageFilter mono=new albnegruFilter(); ImageProducer produc=new FilteredImageSource(img.getSource(), mono); imgn=createImage(produc); } else if (ob.equals("Binar")) { lstT.enable(); lbl.enable(); ok.enable(); } else if (ob.equals("OK")) { valoare=lstT.getSelectedItem(); System.out.println(valoare); int val=Integer.parseInt(valoare); if ((val>=0) && (val<=255)) { ImageFilter bin=new binarfilter(val); ImageProducer produc1=new FilteredImageSource(img.getSource(), bin); imgn=createImage(produc1); } else { lbl.setText("Reintroduceti valoarea"); } } repaint(); return true; } return false; } public void paint(Graphics g) { inalt=imgn.getHeight(this); lat=imgn.getWidth(this); g.drawImage(img,50,60, this); g.drawImage(imgn,80+dimlat,60,this); g.drawImage(histo,50,60+dimin,this); } } // albnegruFilter.java import java.applet.*; import java.awt.*; import java.awt.image.*; class albnegruFilter extends RGBImageFilter { // ColorModel acm=ColorModel.getRGBdefault(); public albnegruFilter () { canFilterIndexColorModel=true; // this.select=select; } public int filterRGB (int x, int y, int rgb) { // int alp=acm.getAlpha(rgb); int alp=(rgb>>24) & 0xff; int culoarepix=rgb & 0x00FFFFFF; int r = (rgb >> 16) & 0xff; int g = (rgb >> 8) & 0xff; int b = (rgb >> 0) & 0xff; // int r=acm.getRed(rgb); // int g=acm.getGreen(rgb); // int b=acm.getBlue(rgb); /* double x=Math.sqrt(r*r+g*g+b*b); double y=Math.sqrt((255-r)*(255-r)+(255-g)*(255-g)+(255-b)*(255-b)); double z=255*Math.pow(3,0.5); double z1=(x*x-y*y+z*z)/(2*z); int r1=(int)(z1/(Math.pow(3,0.5))); */ int r1=(int)((r+g+b)/3.0f); r1=Math.max(0,Math.min(r1,255)); int g1=r1; int b1=r1; return (alp<<24) | (r1<<16) | (g1<<8) | (b1<<0); } } // albnegru.java import java.applet.*; import java.awt.*; import java.awt.image.*; public class albnegru extends Applet { Image rimg; public albnegru(Image source) { ImageFilter mono=new albnegruFilter(); ImageProducer produc=new FilteredImageSource(source.getSource(), mono); rimg=createImage(produc); } //public void paint (Graphics g1) //{ // g1.drawImage(rimg,250,250,this); //} } // albnegru1.java import java.applet.*; import java.awt.*; import java.awt.image.*; public class albnegru1 extends Applet { Image rimg; albnegru1 (Image source) { // canFilterIndexColorModel=true; ColorModel cm=ColorModel.getRGBdefault(); boolean success; int widtho,heighto,oldi; int[] Pixo,Pixn; int pixelval; PixelGrabber pg; widtho = source.getWidth(this); heighto = source.getHeight(this); Pixo = new int[widtho*heighto]; Pixn = new int[widtho*heighto]; pg = new PixelGrabber(source.getSource(), 0,0,widtho,heighto,Pixo,0,widtho); try { success = pg.grabPixels(0); } catch (Exception e) { System.out.println("Eroare!! " + e); } for (int y=0; y < heighto; y++) { for (int x=0; x < widtho; x++) { int r=cm.getRed(Pixo[y*widtho+x]); int g=cm.getGreen(Pixo[y*widtho+x]); int b=cm.getBlue(Pixo[y*widtho+x]); int alp=cm.getAlpha(Pixo[y*widtho+x]); double xx=Math.sqrt(r*r+g*g+b*b); double yy=Math.sqrt((255-r)*(255-r)+(255-g)*(255-g)+(255-b)*(255-b)); double zz=255*Math.pow(3,0.5); double z1=(xx*xx-yy*yy+zz*zz)/(2*zz); int r1=(int)(z1/(Math.pow(3,0.5))); // int r1=(int)((r+g+b)/3.0f); r1=Math.max(0,Math.min(r1,255)); int g1=r1; int b1=r1; Pixn[y*widtho+x]=(alp<<24) | (r1<<16) | (g1<<8) | (b1<<0); } } rimg = createImage(new MemoryImageSource(widtho,heighto,Pixn,0,widtho)); } } // binarfilter.java import java.applet.*; import java.awt.*; import java.awt.image.*; public class binarfilter extends RGBImageFilter { int valoare; public binarfilter (int valoare) { canFilterIndexColorModel=true; this.valoare=valoare; } public int filterRGB (int x, int y, int rgb) { // int alp=acm.getAlpha(rgb); int alp=(rgb>>24) & 0xff; int culoarepix=rgb & 0x00FFFFFF; int r = (rgb >> 16) & 0xff; int g = (rgb >> 8) & 0xff; int b = (rgb >> 0) & 0xff; int r1=(int)((r+g+b)/3.0f); r1=Math.max(0,Math.min(r1,255)); if (r1>=valoare) r1=255; else r1=0; int g1=r1; int b1=r1; return (alp<<24) | (r1<<16) | (g1<<8) | (b1<<0); } }