2016-03-25 23 views
1

Görselin önizlemesini görüntüleyen bir resim galerisi oluşturuyorum. Görüntülerin çoğu için bu sorun değil, sadece görüntü animasyonlu bir gif olduğunda görüntü de animasyonludur, bu durumda bu gerekli değildir. Animasyonlu bir gif için ne yapmak istediğim, yalnızca animasyonun bir karesini görüntülemektir.ImageView: hareketli gif önizleme

Bir çözüm ararken, this ile karşılaştım.

GifDecoder d = new GifDecoder(); 
d.read(filename); 
WritableImage wimg = null; 
Image img = SwingFXUtils.toFXImage(d.getFrame(0), wimg); 

Ama bütün bu ilk çok fazla havai görünüyor ve hızlı bir test şimdiye kadar nedeni bir NullPointerException sona erdiğini d.getFrame(0) döner null.

Görüntüyü hareket ettirmekten kaçınmak için Image'daki bazı özelliklerin veya görüntüyü bir ImageView görüntülemeyen alternatif bir yaklaşım olarak daha kolay bir yol olması gerektiğini düşünüyordum.

cevap

-1

GifDecoder'un çalışmadığı iki neden vardı. Dize bir URI olmalıdır okuma yöntemine geçerken

birincisi, gerçekten benim hataydı:

File f = new File(filename); 
d.read(f.toURI().toString()); 

ikinci konu GifDecoder ile yatıyor: o düşürmek dönüştürülür girişi URI kontrol etmek case ve dönüştürülen String daha sonra InputStream içinde oluşturmak için kullanılır. Bu, NIX tabanlı sistemlerde değil, büyük/küçük harfe duyarlı olmayan (Windows gibi) bir işletim sistemi üzerinde çalışır. Bu yüzden bunu düzeltmem gerekiyordu ve şimdi çalışıyor.