2012-03-01 28 views
7

Chciałbym uzyskać obraz GIF z sieci, ale odkryłem, że jeśli ściągnę cały obraz GIF, spowodowałoby to duży ruch sieciowy.Uzyskiwanie pierwszej klatki obrazu GIF bez pobierania wszystkich innych ramek

Czy mogę uzyskać tylko pierwszą klatkę obrazu GIF bez pobierania wszystkich pozostałych klatek?

+0

Chciałbym znać powód do głosowania w dół całkowicie prawidłowe pytanie. –

+0

Korzystanie z biblioteki z tego linku: https://github.com/dragon66/icafe, byłoby tak proste, jak jedno połączenie liniowe: ImageIO.getReader (ImageType.GIF) .getFrameAsBufferedImage (InputStream jest) lub ImageIO.getReader (ImageType. GIF) .read (InputStream jest). Typem powrotu będzie Java BufferedImage. – dragon66

Odpowiedz

0

Cóż, ja nie znalazłem gotowego do użycia roztworu, ale można to zrobić w ten sposób (będzie to prowadzić do „niskiego poziomu” sztuczek):

Following wiki about GIFs, animowanych plików GIF może być podzielone na ramki, a koniec ramki można łatwo rozpoznać. Tak więc musisz przeczytać nagłówek GIF, informacje ekranowe, informacje o animacji w buforze, pobrać pierwszą ramkę i dołączyć informacje, takie jak GIF, jest zakończone ("3B" po artykule na wiki). Jeśli skopiujesz te dane do oddzielnego bufera, będziesz mógł kontynuować pobieranie całego pliku bez ponownej instalacji pierwszej klatki.

Możesz również edytować informacje w nagłówku, aby sformatować pierwszą klatkę w statyczny gif.

+0

wielkie dzięki. pracuję nad tym. – ctsu

+0

Witam wszelkich aktualizacjach na ten temat –

Powiązane problemy