problem z załadowaniem image

problem z załadowaniem image
JA
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:9
0

Witam, ostattnio zacząłem swoją przygodę z Javą i postanowiłem zrobić sobie mały projekt. Do tego celu potrzebuję załdować obraz z pliku lecz mam problem a mianowicie:

Kopiuj
 
     javax.imageio.IIOException: Can't read input file!
	at javax.imageio.ImageIO.read(ImageIO.java:1275)
	at Ship.<init>(StarWar.java:67)
	at GameFrame.<init>(StarWar.java:50)
	at StarWar$1.run(StarWar.java:24)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
	at java.awt.EventQueue.access$000(EventQueue.java:84)
	at java.awt.EventQueue$1.run(EventQueue.java:602)
	at java.awt.EventQueue$1.run(EventQueue.java:600)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

<image src="cos.png">zdj</image>

Kopiuj
class Ship extends JComponent 
{
	public Ship()
	{
		try
		{
			img = ImageIO.read(new File("prom.png"));
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
		
	}
	public void paintComponent(Graphics g)
	{
		if(img == null)
		{
			return;
		}
		g.drawImage(img, 200, 650, null);
	}
	private Image img;
}
 
  • cos.png (6 KB) - ściągnięć: 148
Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Jesteś pewien że ten twój obrazek jest w odpowiednim miejscu? Bo ja myśle że ścieżka jest błędna... I to ImageIO to też ni w pięć ni w dziewięć. Spróbuj czegoś takiego:

Kopiuj
(Ship.class.getResource("prom.png")).getImage();

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
JA
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:9
0

noo wydaje mi się że jest ok zresztą załącznik pokazuje jaki jest układ katalogów (zdjęcie cos.png to załacznik)

JA
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:9
0

no zrobiłem jak mówisz:

Kopiuj
 
  //img = ImageIO.read(new File("prom.png"));
    img = (Ship.class.getResource("prom.png")).getImage();

i mam coś takiego:

The method getImage() is undefined for the type URL

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

Aj bo mi odgryzło kawałek, mea culpa:

Kopiuj
new ImageIcon(Ship.class.getResource("prom.png")).getImage();

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
JA
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:9
0

ok działa. Dzięki. A z racji tego iż mam niewielkie doświadczenie z Javą to zapytam co jest złego w tym?

Kopiuj
 
  img = ImageIO.read(new File("prom.png"));

czy tak się tylko wczytuje obrazy z okienka wyboru pliku (chooser czy jakoś tak)?

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

ImageIO = "A class containing static convenience methods for locating ImageReaders and ImageWriters, and performing simple encoding and decoding."
To jest taka klasa która zwraca ci jakieś BufferedImage. To jest klasa która przyda się jak coś z tym obrazkiem chcesz robić, niekoniecznie jak chcesz go tylko wyświetlać.
A nie wyświetlalo się zapewne dlatego że ściezka była blędna (patrz że w moim przykładzie odnoszę się do tej ściezki względem Ship.class)


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.