2010-02-19 14 views
10

Sto tentando di codificare una grande quantità di BufferedImages in JPEG utilizzando la classe ImageWriter in javax.imageio. Sfortunatamente, l'operazione di codifica è piuttosto lenta (da circa 80 a 250 ms per immagine, non includendo la scrittura su disco.) Questa fase di codifica finisce per essere la parte più lenta della mia app, quindi spero di ottimizzarla.Cercare un'alternativa più rapida a ImageIO

Qualcuno sa di un'alternativa al pacchetto ImageIO che potrebbe essere più veloce?

risposta

4

ImageMagick potrebbe funzionare. Ci sono vari wrapper Java per ImageMagick, che è una libreria di manipolazione di immagini di qualità eccezionale (e velocità).

JMagick è un tale involucro, ce ne sono altri:

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

Poi alcuni consigli alla gente usando ProcessBuilder per fare direttamente "nativo" chiede a quanto pare i perfs sono migliori e c'è meno rischio di incidenti (i wrapper ImageMagick potrebbero non essere così grandi da un punto di vista delle prestazioni e dell'uso della memoria).

Se la velocità e la qualità JPEG sono un problema, non si può sbagliare molto con ImageMagick: spetta a te vedere se preferisci utilizzare un wrapper o chiamare direttamente gli eseguibili ImageMagick dal tuo programma Java.

Ora ovviamente funziona solo se la scrittura di un file senza perdita dalla tua app (ad esempio file PNG) è abbastanza veloce.

3

È possibile esaminare JAI. This guy sembra avere successo con i TIFF.

2

http://www.chrfr.de/software/PNG.java è un'opzione per la generazione di immagini PNG.

+0

Holy fumi che è veloce. Ho ottenuto la compressione di un pover'uomo sostituendo l'uso di DeflaterOutputStream invece della classe ZLib nella parte inferiore del file. – qualidafial

+0

Per me non sta affatto comprimendo ... Il risultato è 4MB su 1280 * 800 immagini .... –

Problemi correlati