2010-02-19 34 views
10

Çok miktarda BufferedImages'yi javax.imageio'da ImageWriter sınıfını kullanarak JPEG'e kodlamaya çalışıyorum. Ne yazık ki, kodlama işlemi oldukça yavaştır (diske yazma dahil değil, resim başına yaklaşık 80 ila 250 ms). Bu kodlama aşaması, uygulamamın en yavaş parçası olmak üzere biter, bu yüzden optimize etmeyi umuyorum.ImageIO'ya daha hızlı bir alternatif mi arıyorsunuz?

ImageIO paketine alternatif olabilecek daha hızlı bilen var mı?

cevap

4

ImageMagick işe yarayabilir. Olağanüstü kalitede (ve hızda) bir görüntü işleme kitaplığı olan ImageMagick için çeşitli Java sarmalayıcıları vardır.

http://sourceforge.net/projects/jmagick/

Sonra doğrudan "yerli" yapmak için ProcessBuilder kullanarak bazı insanlar tavsiye görünüşte perfs iyidir ve çöker az riskli (var çağrısında:

JMagick diğer olanlar vardır, böyle bir sarıcı ImageMagick sarmalayıcıları, performanstan ve bellek kullanım noktasından mükemmel olmayabilir.

Hız ve JPEG kalitesi bir sorunsa, ImageMagick ile çok fazla yanlış gidemezsiniz: bir sarıcı kullanmayı veya doğrudan Java programınızdan ImageMagick çalıştırılabilirlerini çağırmayı tercih edip etmediğinizi görmek size kalmıştır.

Tabii ki bu, yalnızca uygulamanızdan kayıpsız bir dosya yazarken (PNG dosyaları gibi) yeterince hızlı çalışır. PNG görüntülerini oluşturmak için bir seçenek

3

JAI'a bakabilirsiniz. This guy, TIFF'ler ile başarılı görünüyordu.

2
+0

Bu hızlı kutsal dumanlar. Zayıf bir adamın sıkıştırmasını, dosyanın altındaki ZLib sınıfının yerine DeflaterOutputStream ile değiştirerek aldım. – qualidafial

+0

Benim için hiç sıkıştırmıyor ... Sonuç 1280 * 800 görüntüden 4MB. –

İlgili konular