Java:尝试读取图像时出现异常“文件错误不是图像文件”

时间:2019-09-20 14:37:00

标签: java image bufferedreader

我的程序中有一个简短的子例程,可以在Java 7和Windows 7上很好地读取.jpeg图像文件。

我将Java升级到版本12,现在使用Windows 10,它无法再读取.jpeg文件。我正在使用常规的.jpeg文件RGB 8和12位。我想知道现在是否有较新的课程,但是我找不到有关它的信息。

 /*
  * Get image subroutine
  */
 BufferedImage img = null;
 try {
     img = ImageIO.read(new File(InputFolder + name));

     /*
      * Get dimension subroutine
      */
     int imagewidth = img.getWidth();
     int imageheight = img.getHeight();

     System.out.println("     retrieving width of " + name + " .... " + imagewidth);
     System.out.println("     retriving height of " + name + " .... " + imageheight);
     /*textArea1.append("\n    retrieving width of "+name+" .... \n"+imagewidth); 
       textArea1.append("\n    retriving height of "+name+" .... \n"+imageheight);*/

我将遇到一个异常,说“文件错误不是图像文件。已中止。 可以使用Photoshop等照片编辑器打开所有文件。

这是新代码。我总是收到-1的宽度和长度。

try {
                    MediaTracker mt = new MediaTracker(new JPanel());
                    Image img = Toolkit.getDefaultToolkit().getImage(InputFolder + name);
                    mt.addImage(img, 0);
                    System.out.println("Wait image to be load to retrieve info...");
                    mt.waitForAll();
                    System.out.println("Loaded");


                    /**
                     * Get dimension subroutine
                     */
                    System.out.println(" Get Width & Height ");


                    int imagewidth = img.getWidth(this);
                    int imageheight = img.getHeight(this);

1 个答案:

答案 0 :(得分:0)

如答案here

中所述

尝试使用Toolkit createImage(),getImage()而不是ImageIO.read()