2010-02-19 10 views
10

Próbuję zakodować dużą ilość BufferedImages w JPEG przy użyciu klasy ImageWriter w javax.imageio. Niestety, operacja kodowania jest dość powolna (około 80 do 250 ms na obraz, nie wliczając zapisu na dysk.) Ten etap kodowania kończy się jako najwolniejsza część mojej aplikacji, więc mam nadzieję zoptymalizować ją.Poszukuję szybszej alternatywy dla ImageIO

Czy ktoś wie o alternatywę dla pakietu ImageIO, która może być szybsza?

Odpowiedz

4

ImageMagick może działać. Istnieją różne wrappery Java dla ImageMagick, która jest biblioteką manipulacji obrazami o wyjątkowej jakości (i szybkości).

JMagick jest jednym z takich wrapper, istnieją inne z nich:

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

Potem kilka rad osób korzystających ProcessBuilder bezpośrednio make „native” domaga się widocznie perfs są lepsze i jest mniejsze ryzyko wypadków (Owijarki ImageMagick mogą nie być tak wspaniałe z punktu widzenia wydajności i użycia pamięci).

Jeśli problemem jest szybkość i jakość JPEG, to nie można pomylić się z ImageMagick: od Ciebie zależy, czy wolisz używać opakowania lub bezpośrednio wywoływać pliki wykonywalne ImageMagick z programu Java.

Oczywiście działa to tylko wtedy, gdy pisanie bezstratnego pliku z aplikacji (np. Pliki PNG) jest wystarczająco szybkie.

3

Można zajrzeć do JAI. This guy wydawało się mieć sukces z TIFF.

2

http://www.chrfr.de/software/PNG.java to opcja do generowania obrazów PNG.

+0

Święty dym, który jest szybki. Mam kompresję biednego człowieka, zastępując użycie DeflaterOutputStream zamiast klasy ZLib na dole pliku. – qualidafial

+0

Dla mnie to wcale nie kompresuje ... Rezultat to 4MB z 1280 * 800 obrazów .... –