Bild im Glas kann nicht gelesen werden

Ich habe ein Programm zum Verschlüsseln eines Bildes in Netbeans geschrieben. Das Programm funktioniert einwandfrei, wenn es von NetBeans ausgeführt wird, aber wenn ich es in eine JAR-Datei einbaue, funktioniert es nicht. Es kann das Bild nicht lesen, obwohl ich die Bilddatei im selben Ordner wie die JAR-Datei abgelegt habe.

    package test;

    import java.io.IOException;
    import java.io.File;
    /**
     *
 * @author AMaR
*/
public class Test {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws IOException, Exception {


    File EnImage = new File("encrypted.png");
    File DeImage = new File("decrypted.png");
    int[] pixels;

    LoadImage l = new LoadImage();
    l.load();
    pixels= l.getImagePixels();

    RC4New rc4 = new RC4New();
    int key[]= {13,2,4,6,};
  //  int data[]={5,10,90,5};
    rc4.KSA(key);
    int[] text = rc4.PRNG(pixels);
    l.write((int)512,(int)512,text,EnImage);

    //RC4New rc41 = new RC4New();
    rc4.KSA(key);
    int[] text1 = rc4.PRNG(text);
    l.write((int)512,(int)512,text1,DeImage);



 /*   for(int i=0;i<text.length;i++){
        System.out.println(text[i]);
    }

     RC4New rc41 = new RC4New();
     rc4.KSA(key);
    int[] text1 = rc4.PRNG(text); 
     for(int i=0;i<text1.length;i++){
        System.out.println(text1[i]);
    }

   */ 
    System.out.println("length:"+pixels.length);
  //  l.write((int)512,(int)512,text);

    // TODO code application logic here
}
    } 

// Verschlüsselung

 package test;

 /**
     *
 * @author AMaR
 */
 public class RC4New {
 int state[] = new int[256];

 int j;
 /**
 *
 * @param key
 */
public void KSA(int[] key){ 

    int tmp;
    for (int i=0; i < 256; i++) {
        state[i] = i;
    }

    j=0;

    for (int i=0; i < 256; i++) {

       j = (j + state[i] + key[i % key.length]) % 256;
        tmp = state[i];
        state[i] = state[j];
        state[j] = tmp;
    }
}
    public int[] PRNG(int[] data){
    int tmp,k;
    int i=0;
    j=0;
    int[] cipherText = new int[data.length];
    for(int x=0;x<data.length;x++){
        i = (i + 1) % 256;
        j = (j + state[i]) % 256;
        tmp = state[i];
        state[i] = state[j];
        state[j] = tmp;
        k = state[(state[i] + state[j]) % 256];
        cipherText[x]=  (data[x] ^ k);
    }
    return cipherText;



    }


    }

// Bild laden / schreiben

    package test;

    import java.awt.Dimension;
    import java.awt.image.BufferedImage;
    import java.awt.image.Raster;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import java.io.File;
    import java.awt.image.WritableRaster;
    /**
    *
    * @author AMaR
    */


    public class LoadImage {
      BufferedImage image;
      void load()throws Exception { 

   //  FIle newfile = new File("lena.png)

     image = ImageIO.read(getClass().getResourceAsStream("lena.png"));
    }
    public Dimension getImageSize() {
    return new Dimension(image.getWidth(), image.getHeight());
    }

   public int[] getImagePixels() {
    int [] dummy = null;
    int wid, hgt;

   // compute size of the array
    wid = image.getWidth();
    hgt = image.getHeight();

   // start getting the pixels
   Raster pixelData;
   pixelData = image.getData();
   return pixelData.getPixels(0, 0, wid, hgt, dummy);


   }
    @SuppressWarnings("empty-statement")
   public void write(int width ,int height, int[] pixels,File outputfile) {

       try {
   // retrieve image
    BufferedImage writeImage = new BufferedImage(512, 512, BufferedImage.TYPE_BYTE_GRAY);;
     // File outputfile = new File("encrypted.png");
    WritableRaster raster = (WritableRaster) writeImage.getData();
    raster.setPixels(0,0,width,height,pixels);
    writeImage.setData(raster);
    ImageIO.write(writeImage, "png", outputfile);

    } catch (IOException e) {
      }

     }
    }

Antworten auf die Frage(1)

Ihre Antwort auf die Frage