7

Sto lavorando a un'applicazione Midlet. Mi sto trovando nella necessità di ridimensionare le immagini molto spesso. Questo è diventato un problema perché alcuni telefoni sono piuttosto lenti e il ridimensionamento richiede troppo tempo.Java - Ho bisogno di un algoritmo di ridimensionamento delle immagini molto veloce

Attualmente sto usando Image.createRGBImage (int, int, int, booleano) per ridimensionare l'immagine.

Mi chiedevo se qualcuno di voi sapesse di un modo molto efficiente e veloce per ridimensionare un'immagine.

Nota: questa è un'applicazione Midlet quindi è disponibile solo JavaME, il che significa che non ho accesso ad altre librerie disponibili nella versione java completa.

Nota2: gran parte del mio ridimensionamento viene eseguito da immagini piccole a grandi, anche se ridimensiono l'immagine.

+1

di che dimensioni stai parlando? la variazione% è arbitraria o un semplice multiplo (come 2x)? –

+0

un modo per ottimizzare è utilizzare mipmapping: http://www.3drender.com/glossary/mipmapping.htm – appas

+0

La dimensione della scala è arbitraria. Diciamo che la mia immagine è 100 px per 65 px. Ho bisogno di ridimensionarlo a qualsiasi dimensione che voglio. Diciamo 200px per 500px o 1200px per 10px. Quindi deve essere scalato in alto o in basso in verticale o in orizzontale e/o in qualsiasi combinazione di entrambi. – Tony

risposta

29

Ricorda che c'è sempre uno scambio tra velocità e qualità dell'immagine quando si discutono gli algoritmi di ridimensionamento e la soluzione ideale per il tuo caso potrebbe richiedere qualche ricerca e test.

Nearest neighbor è l'implementazione più semplice e veloce di ridimensionamento delle immagini.

C'è una bella introduzione sulla scala/ridimensionamento dell'immagine su Coding Horror che rivede un paio di tecniche e ne confronta la qualità.

Immagino che tu stia lavorando con un dispositivo di visualizzazione molto piccolo, quindi alla fine la qualità dell'immagine non è molto importante. Alcune persone chiamano thisl'implementazione di ridimensionamento delle immagini più veloce per J2ME.

Ma se siete disposti a leggere alcune altre cose, this paper presenta un basso costo (che significa "molto veloce") algoritmo per il ridimensionamento che migliora in modo significativo il più vicino interpolazione prossimo. È disponibile il codice sorgente e presentano anche un'evoluzione di tale ricerca here.

Infine, ma non meno importante, cvResize() da OpenCV (libreria open source/multipiattaforma per l'elaborazione delle immagini). Gli addetti al garage del salice sono piuttosto bravi a eseguire procedure veloci per l'elaborazione di immagini/video e questa funzione fornisce un paio di tecniche per il ridimensionamento, quindi potrebbe essere utile verificare l'implementazione.

+1

Grazie. Attualmente sto usando la tecnica che descrivi nel tuo link: "Alcuni lo chiamano l'implementazione di ridimensionamento dell'immagine più veloce per J2ME." Esaminerò le altre tecniche e eseguirò alcuni test e vedrò se ottengo un ridimensionamento più veloce. Complimenti per la tua eccellente risposta. I punti vanno a te. Grazie Carlo. – Tony

Problemi correlati