Hi!
ich bin dabei ein programm zu schreiben, wasd 2 Bilder vergleichen soll pixel für pixel, dafür muss ich das bild in ein int-array überführen und habe PixelGrabber verwendet, leider treten fehler dabei auf
-1
Uncaught error fetching image:
java.lang.ArrayIndexOutOfBoundsException: 1
at java.awt.image.PixelGrabber.setPixels(PixelGrabber.java:595)
at sun.awt.image.ImageDecoder.setPixels(ImageDecoder.java:120)-267552
at sun.awt.image.JPEGImageDecoder.sendPixels(JPEGImageDecoder.java:97)
at sun.awt.image.JPEGImageDecoder.readImage(Native Method)
at sun.awt.image.JPEGImageDecoder.produceImage(JPEGImageDecoder.java:119
)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.j
ava:246)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)
ich bin dabei ein programm zu schreiben, wasd 2 Bilder vergleichen soll pixel für pixel, dafür muss ich das bild in ein int-array überführen und habe PixelGrabber verwendet, leider treten fehler dabei auf
-1
Uncaught error fetching image:
java.lang.ArrayIndexOutOfBoundsException: 1
at java.awt.image.PixelGrabber.setPixels(PixelGrabber.java:595)
at sun.awt.image.ImageDecoder.setPixels(ImageDecoder.java:120)-267552
at sun.awt.image.JPEGImageDecoder.sendPixels(JPEGImageDecoder.java:97)
at sun.awt.image.JPEGImageDecoder.readImage(Native Method)
at sun.awt.image.JPEGImageDecoder.produceImage(JPEGImageDecoder.java:119
)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.j
ava:246)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)
Code:import java.applet.Applet; import java.awt.*; import java.awt.image.*; import java.awt.event.*; public class FuMain extends Applet { protected Image bildeins, bildzwein, bildkopie, bildkopiezwei; protected Button click = new Button("Vergleich"); protected int Count=0, width1, hoehe1, width2, hoehe2; protected String bildpfad1; protected String bildpfad2; public void init() { click.addActionListener(new ButtonListener()); //Adds a listener, so action can be performed if clicked setLayout(new BorderLayout()); add("North",click); bildpfad1 = getParameter("bild"); bildpfad2 = getParameter("bildzwei"); bildeins = getImage( getDocumentBase(), bildpfad1 ); bildkopie = bildeins; bildzwein = getImage( getDocumentBase(), bildpfad2 ); bildkopiezwei = bildzwein; width1=bildeins.getWidth(this); hoehe1=bildeins.getHeight(this); width2=bildzwein.getWidth(this); hoehe2=bildzwein.getHeight(this); System.out.println(width1); } public class ButtonListener implements ActionListener //The listener class { public void actionPerformed(ActionEvent push) //If button is clicked...will run this { } } public void run() {} public void start() {} public void stop() {} public void destroy() {} public void paint(Graphics g) throws ArrayIndexOutOfBoundsException { Grabber lala1=new Grabber(width1*hoehe1); lala1.grab(bildeins, width1, hoehe1); lala1.ausgabe(lala1.pix); g.drawString("lala",50,50); try { g.drawImage( bildkopie, 0, 50, this ); g.drawImage( bildkopiezwei, 205, 50, this ); } catch(ArrayIndexOutOfBoundsException k) { } } public class Grabber { Image img; int[] pix; Grabber(int n) { pix=new int[n]; } protected void grab(Image img, int width1, int hoehe1) { // Kopiert die Bilddaten des übergebenen // Bildes in das übergebene Array PixelGrabber grabber = new PixelGrabber(img, 0, 0, width1, hoehe1, pix, 0, width1); try { grabber.grabPixels(); } catch (InterruptedException e) { e.printStackTrace(); } } protected void ausgabe(int[] pix) { for(int z=0; z<pix.length; z++) { System.out.print(pix[z] + " "); } } } } // ENDE DER KLASSE