Autor Wątek: ImageIO.write() - 16 bajtów za dużo  (Przeczytany 1153 razy)

Offline Troll

  • Użytkownik
    • Oficjalna strona gry Gizarma

# Luty 13, 2009, 23:40:30
Witam wszystkich

Ostatnio pisałem 2 programy, 1 zapisywał plik, drugi go odczytywał. Plik był zorganizowany w następujący sposób

[coś tam][obraz w formacie PNG][coś tam]

Program zapisujący:
DataOutputStream out=new DataOutputStream(...);
[zapis jakiś danych]
ImageIO.write( bufferedImage, "png", out );
[zapis jakiś danych]
out.close()

Program odczytujący:
DataInputStream in=new DataInputStream(...);
[odczyt jakiś danych]
ImageIO.read(in);
[odczyt jakiś danych]
in.close();

Problem jest następujący: po wywołaniu funkcji ImageIO.read() okazuje się, że dalsze dane znajdują się w odstępie 16 bajtów od miejsca w którym metoda skończyła odczyt. Czyli aby odczytac moje dane muszę zrobic następująco:

Poprawiony program odczytujący:
DataInputStream in=new DataInputStream(...);
[odczyt jakiś danych]
ImageIO.read(in);
in.readInt();
in.readInt();
in.readInt();
in.readInt();
[odczyt jakiś danych]
in.close();

i dopiero teraz wszystko działa.

Czy ktoś miał kiedyś podobne problemy?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych