Tworzę program, który pobiera dane o obrazie z tablicy bajtów z serwera. Konwertuję te dane do formatu 24-bitowego BMP (niezależnie od tego, czy jest to jpeg, png, bmp, czy 8-24-32bpp). Po pierwsze, zapisuję go w mojej HD, a następnie ładuję go do ikony JLabel. Działa perfekcyjnie, choć istnieją pewne przypadki, w których pojawia się następujący wyjątek:Konwertuj i wyświetlaj obraz z tablicy bajtów
java.io.EOFException at
javax.imageio.stream.ImageInputStreamImpl.readFully(ImageInputStreamImpl.java:353) at
com.sun.imageio.plugins.bmp.BMPImageReader.read24Bit(BMPImageReader.java:1188) at
com.sun.imageio.plugins.bmp.BMPImageReader.read(BMPImageReader.java:843) at
javax.imageio.ImageIO.read(ImageIO.java:1448) at
javax.imageio.ImageIO.read(ImageIO.java:1308)
dla tej linii (drugi)
File imgFile = new File("d:/image.bmp");
BufferedImage image = ImageIO.read(imgFile);
w następujących przypadkach:
- obraz robi nie ładuje się do JLabel, ale można go znaleźć na mojej HD
- konwersja nie jest właściwa, ponieważ coś "ześlizguje się"
- obraz jest jak podczas korzystania z kursywy w dokumencie programu Word
początku myślałem, że być może BPP jest problem, potem pomyślałem, że może zdjęcia są zbyt duże, ale mam przypadków to działa i przypadki nie dotyczy obu sugestii. Trochę utknąłem tutaj i będę zadowolony z pomysłów.
Czy stworzyłeś te obrazy? Wszystko, o czym mogę pomyśleć, to to, że są one tworzone z pewnym formatem BMP, którego nie obsługuje ImageIO. Może jeśli spróbujesz edytować zdjęcia i zapisać je ponownie. – Piro
Myślę, że problem polega na tym, że niektóre obrazy nie mają bajtów EOF i dlatego uzyskujesz 'java.io.EOFException'. Doświadczyłem tego samego problemu z formatem 'jpeg'. Ma to sens, jeśli uważasz, że metadane pliku zawierają informacje o długości pliku i w konsekwencji EOF nie byłoby konieczne. Fakt ten wyjaśnia, dlaczego pliki można znaleźć w HD (a nawet można je otworzyć), ale w języku Java pojawia się wyjątek. – dic19
Sprawdź [to] (http: // stackoverflow.com/questions/12288813/exception-java-awt-color-cmmexception-invalid-image-format-throw-when-resizi/16858161 # 16858161) link, istnieje wyjaśnienie mojego doświadczenia w pracy z obrazami 'jpeg', które mam nadzieję być pomocny. – dic19