// histograma.html import java.applet.*; import java.awt.*; import java.awt.image.*; public class histograma extends Applet { Image img,imgn; Graphics gg; int Hist[]=new int[256]; int max=0; int dimlat,dimin; //dimensiuni imagine img int lat,inalt; //dimensiuni imgn public void init() { Color culoare=new Color(100,200,200); 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; // Image rimg; Panel p=new Panel(); setLayout(new BorderLayout()); p.add(new Button("Histograma")); add("North",p); } public boolean action(Event evt, Object ob) { Graphics gg=getGraphics(); inalt=imgn.getHeight(this); lat=imgn.getWidth(this); gg.clearRect(60,100+dimin,60+lat,100+dimin+inalt); gg.dispose(); for (int i=0;i<256;i++) Hist[i]=0; if (evt.target instanceof Button) { ColorModel cm=ColorModel.getRGBdefault(); boolean success; int widtho,heighto,oldi; int[] Pixo,Pixn; int pixelval; PixelGrabber pg; widtho = img.getWidth(this); heighto = img.getHeight(this); Pixo = new int[widtho*heighto]; Pixn = new int[widtho*heighto]; pg = new PixelGrabber(img.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]); int gray=(r+g+b)/3; Hist[gray]++; } for (int i=0;i<256;i++) { if (Hist[i]>max) max=Hist[i]; } } repaint(); //selection=10; return true; } return false; } public void paint(Graphics g) { char sir[]={'2','5','5'}; g.drawImage(img,50,60,this); g.setColor(Color.red); g.drawLine(80+dimlat,260,80+dimlat+256,260); g.drawLine(80+dimlat,260,80+dimlat,60); g.drawChars(sir,0,3,80+dimlat+250,275); /* sir="0".toCharArray(); char sir1[]={'0'}; g.drawChars(sir1,0,3,65+dimlat,275); */ sir=(String.valueOf(max)).toCharArray(); g.drawChars(sir,0,3,80+dimlat-25,70); Color culoare=new Color(70,70,70); g.setColor(culoare); for (int i=0;i<256;i++) g.drawLine(80+dimlat+i,260,80+dimlat+i,260-(Hist[i]*200/max)); g.dispose(); } public void update(Graphics g) { paint(g); } }