Moin,
ich habe hier ein Bild das ich einlese. Ich muss das Bild zu einem Vektor wandeln weil ich diesen Vektor später noch brauche. Vekotr ist in diesem Fall ein 2 dimensionales Array.
Das Problem liegt hier(Zeile 85 und 86), Beim zurückholen bekomme ich eine null pointer Exception.:
vema a=new vema(pix2grab);
pix2grab=a.verschieben(10,10);
Ich übegebe das alte array, es soll sortiert und wieder zurückgegeben werden. Ich muss an der Aufgabe noch weiterbasteln deshalb komm ich um das übergeben und zurückhoölen nicht herum.
Wo ist mein Denkfehler?
ich übergebe dem Konstruktor der Klasse vema das Array aus dem Pixelgrabber.
Ich sortiere die Pixel wie ich sie brauche.
und bekomme das Array mit dem Returnwert auch wieder zurück.
ich habe hier ein Bild das ich einlese. Ich muss das Bild zu einem Vektor wandeln weil ich diesen Vektor später noch brauche. Vekotr ist in diesem Fall ein 2 dimensionales Array.
Das Problem liegt hier(Zeile 85 und 86), Beim zurückholen bekomme ich eine null pointer Exception.:
vema a=new vema(pix2grab);
pix2grab=a.verschieben(10,10);
Ich übegebe das alte array, es soll sortiert und wieder zurückgegeben werden. Ich muss an der Aufgabe noch weiterbasteln deshalb komm ich um das übergeben und zurückhoölen nicht herum.
Wo ist mein Denkfehler?
ich übergebe dem Konstruktor der Klasse vema das Array aus dem Pixelgrabber.
Ich sortiere die Pixel wie ich sie brauche.
und bekomme das Array mit dem Returnwert auch wieder zurück.
Java:
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
class vema{
static int [] pixArray;
static int [][] pixelVec;
static int W= test22.W;
static int H=test22.H;
public vema(int[] array){
pixArray=array;
}
public int[] verschieben(int xtrans, int ytrans){
int k=0;
for(int i=0;i<W;++i)
for(int j=0;j<W;++j){
pixelVec[i+xtrans][j+ytrans]=pixArray[k];
++k;
}
int l=0;
while(l<W*H){
for(int i=0;i<W;++i)
for(int j=0;j<W;++j){
pixArray[l]=pixelVec[i][j];
++l;
}
}
return pixArray;
}
}
class grafisch extends Frame{
public grafisch(){
super("");
setLayout(new BorderLayout());
test22 a=new test22(this);
Panel pan=new Panel();
pan.setLayout(new BorderLayout());
pan.add(BorderLayout.CENTER,a);
add(BorderLayout.CENTER,pan);
setSize(500,500);
setVisible(true);
pan.setVisible(true);
}
}
public class test22 extends Component{
Image img;
final static int H=80;
final static int W=80;
int[] pix2grab=new int[W*H];
int [][] pix2move;
MemoryImageSource msrc;
public test22 (Frame f){
try{
FileDialog fd=new FileDialog(f);
fd.setVisible(true);
img=getToolkit().getImage(fd.getDirectory()+fd.getFile()).getScaledInstance(W,H,Image.SCALE_SMOOTH);
fd.setFile("");
MediaTracker mt=new MediaTracker(this);
mt.addImage(img,0);
mt.waitForAll();
PixelGrabber grab=new PixelGrabber(img,0,0,W,H,pix2grab,0,W);
grab.grabPixels();
msrc= new MemoryImageSource(W,H,pix2grab,0,W);
img=createImage(msrc);
img.flush();
}
catch(InterruptedException e){
System.out.println(e);
}
}
public void paint(Graphics g){
g.drawImage(img,0,0,this);
vema a=new vema(pix2grab);
pix2grab=a.verschieben(10,10);
}
public static void main(String[] args){
new grafisch();
}
}