当前位置: 首页 > 面试题库 >

无法读取罐子中的图像

严劲
2023-03-14
问题内容

我已经编写了一个程序来加密Netbeans中的图像。从Netbeans运行时,该程序运行良好,但是当我将其构建为.jar文件时
,即使我将图像文件与.jar文件放在同一文件夹中,它也无法读取图像。

    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
}
    }

//encryption

 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;



    }


    }

//loading/writing image

    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) {
      }

     }
    }

问题答案:

目前尚不清楚以下哪个触发您的错误。这个

 File EnImage = new File("encrypted.png");

将从当前目录读取,该目录不一定与您的jar文件所在的目录相同。

这个

image = ImageIO.read(getClass().getResourceAsStream("lena.png"));

将从类所在的jar文件中的目录中读取。请注意,您是从jar文件而不是目录中读取。

鉴于以上代码,我将:

  1. 确定或明确指定操作的工作目录File()。您的工作目录是您java从中调用的目录,在IDE内外,这可能有所不同。
  2. 将lena.png打包为.jar文件中的资源。


 类似资料:
  • 问题内容: 我已经编写了一个程序来加密Netbeans中的图像。从Netbeans运行时,该程序运行良好,但是当我将其构建为.jar文件时,即使我将图像文件与.jar文件放在同一文件夹中,它也无法读取图像。 //加密 //加载/写入图片 问题答案: 目前尚不清楚以下哪个触发您的错误。这个 将从当前目录读取,该目录不一定与您的jar文件所在的目录相同。 这个 将从类所在的jar文件中的目录中读取。请

  • 问题内容: 第一。我知道关于如何访问jar文件中的图像已经存在各种主题。第二。我尝试了很多选择,但没有一个没有用。我当然知道在某个地方我犯了一个错误。您能帮助我了解我在做什么错吗? 因此,我有一个名为“ j”的原型项目,它仅包含一个Java类- 客户端。客户端尝试访问图像good.png。将所有文件打包到可执行jar文件后,客户端将无法访问文件。我在月食中工作,并使用蚂蚁。 com.pupcom.

  • 当我构建一个jar文件并运行它时,由于找不到图像图标,它显示一个空指针异常 这是我运行jar文件时得到的错误 但是当我在NetBeans中运行这个项目时,它运行良好 这是我列出罐子里所有文件时的输出

  • 我在为D写一个角色构建器 我正在使用InputStream将javafx Image构造加载到ImageView构造函数[new ImageView(new Image(getClass(). getResourceAsStream(...)))]中;当我加载一些. jpeg图像时,它可以工作,但当我对. png图像执行相同的过程时就不行了 我已经尝试了这里描述的许多关于StackOverflow

  • 问题内容: 我正在尝试从无头CMS(Sanity.io)返回一些数据,但是我的React一直遇到错误。我已遵循此示例,但是现在出现错误 我的密码 关于我在做什么错的任何想法吗? 问题答案: 渲染组件时,可以将country定义为未定义或为null。确保它在初始渲染时是数组: 或者, 您可以将地图用于这样的国家/地区: 这样可以确保仅在有国家/地区时才运行地图。

  • 我目前正在为我正在制作的一款游戏进行单元测试,但在maven身上遇到了一个奇怪的错误,我无法理解。 我已经运行了,现在我的测试失败了。 以下是我在运行mvn测试-X时遇到的错误: 这是我的Maven文件: 这是JUnit测试的代码: 下面是我得到错误的代码: 我很确定它与maven文件有关,但我不确定它是什么。也许是我正在使用的图像阅读库?任何帮助都将不胜感激。