2016-02-25 3 views
0

У меня есть этот код:Как правильно создать BufferedImage из файла?

package test; 
import javax.imageio.ImageIO; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.WindowConstants; 
import java.awt.Graphics; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 

public class SwingSandbox { 

    public static void main(String[] args) throws IOException { 
     JFrame frame = buildFrame(); 

     final BufferedImage image = ImageIO.read(new File("C:\\Projects\\Test\\src\\test\\InterestCalcGraphic.jpg")); 

     JPanel pane = new JPanel() { 
      @Override 
      protected void paintComponent(Graphics g) { 
       super.paintComponent(g); 
       g.drawImage(image, 0, 0, null); 
      } 
     }; 


     frame.add(pane); 
    } 


    private static JFrame buildFrame() { 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     frame.setSize(200, 200); 
     frame.setVisible(true); 
     return frame; 
    } 


} 

Когда я запускаю его, я получаю сообщение об ошибке:

Exception in thread "main" javax.imageio.IIOException: Can't read input file! 
    at javax.imageio.ImageIO.read(ImageIO.java:1301) 
    at test.SwingSandbox.main(SwingSandbox.java:17) 

Сообщение об ошибке приводит меня к мысли, что мой путь к файлу неверен, но изображение хранится в Test - src - test в моем каталоге файлов. Что я делаю не так?

+0

Возможный дубликат http://stackoverflow.com/questions/5713096/javax-imageio-iioexception-for-apparently-no-reason –

+0

Изображение по какой-либо причине не может быть прочитано, может быть, это не существует или не поддерживается форматом изображения. – MadProgrammer

+0

Он существует, потому что он отображается в каталоге файлов и как нельзя поддерживать jpg? –

ответ

1

ImageIO даже не пытался загрузить файл с изображениями. Что-то не так с вашим файлом. Например. ваш путь неверен. Попробуйте назвать это

File f = new File("C:\\Projects\\Test\\src\\test\\InterestCalcGraphic.jpg"); 
boolean value = f.canRead(); 

Что такое логическое значение переменной value? Если это false проверьте путь к файлу изображения, имя файла typo и т. Д.

+0

Это ложь, но я не могу понять, почему. Мой путь к файлу кажется правильным. –

+0

'at javax.imageio.ImageIO.read (ImageIO.java:1301)', кажется, предлагает иначе – MadProgrammer

+0

Попробуйте другое изображение. Также попробуйте использовать косые черты. Я думаю, что работает в java. C:/Projects/Test/... – ssimm

1

Я создал папку, называемую графикой, а затем использовал только имя папки на моем пути, ничего больше. Например:

final BufferedImage image = ImageIO.read(new File("graphics/a.jpg")); 
0

Я думаю, вы хотите прочитать файл из пути к классам.

final BufferedImage defaultImage = 
    ImageIO.read(
     this.getClass().getResourceAsStream("/graphics/file.png")); 

Поместите файл в src/main/resource/graphics. (для значений по умолчанию maven)

Смежные вопросы