Domanda

Sto usando sia l'apis multimediale JAI sia ImageMagick?

ImageMagick presenta alcuni problemi di scalabilità e anche JMagick basato su JNI non è attraente. JAI ha risultati di scarsa qualità quando si eseguono operazioni di ridimensionamento rispetto a ImageMagick.

Qualcuno conosce strumenti eccellenti sia open source che commerciali che sono nativi Java e forniscono risultati di alta qualità?

È stato utile?

Soluzione

C'è ImageJ , che vanta di essere il

  

pura immagine Java più veloce del mondo   programma di elaborazione

Può essere usato come libreria in un'altra applicazione. La sua architettura non è geniale, ma svolge compiti basilari di elaborazione delle immagini.

Altri suggerimenti

So che questa domanda è piuttosto vecchia, ma quando esce un nuovo software aiuta a ottenere alcuni nuovi collegamenti a progetti che potrebbero essere interessanti per la gente.

imgscalr è un ridimensionamento delle immagini in puro Java (e semplici operazioni come il riempimento, il ritaglio, la rotazione, la luminosità) / dimming, ecc.) che è dolorosamente semplice da usare - una singola classe è costituita da un insieme di semplici operazioni grafiche tutte definite come metodi statici per passare un'immagine e ottenere un risultato.

L'esempio più basilare di utilizzo della libreria sarebbe simile al seguente:

BufferedImage thumbnail = Scalr.resize(image, 150);

E un uso più tipico per generare miniature di immagini usando alcune modifiche di qualità e simili potrebbe apparire così:

import static org.imgscalr.Scalr.*;

public static BufferedImage createThumbnail(BufferedImage img) {
    // Create quickly, then smooth and brighten it.
    img = resize(img, Method.SPEED, 125, OP_ANTIALIAS, OP_BRIGHTER);

    // Let's add a little border before we return result.
    return pad(img, 4);
}

Tutte le operazioni di elaborazione delle immagini utilizzano la pipeline Java2D non elaborata (che è accelerata dall'hardware sulle piattaforme principali) e non introdurranno il dolore di richiamare tramite il conflitto della libreria JNI come nel tuo codice.

imgscalr è stato anche implementato in produzioni su larga scala in parecchi posti - l'inclusione della classe AsyncScalr lo rende un perfetto drop-in per qualsiasi elaborazione di immagini lato server.

Esistono numerose modifiche alla qualità dell'immagine che è possibile utilizzare per bilanciare tra velocità e qualità con la modalità ULTRA_QUALITY più alta che fornisce un risultato in scala che sembra migliore dell'implementazione Lancoz3 di GIMP.

Un'altra valida alternativa: Marvin

Non sono un tipo Java, ma OpenCV è perfetto per le mie esigenze. Non sono sicuro che si adatti al tuo. Ecco una porta Java, penso: http://docs.opencv.org/2.4/doc/ tutorial / introduzione / desktop_java / java_dev_intro.html

L'elaborazione è nuova ma molto, molto buona.

Prova a utilizzare Catalano Framework .

Punti chiave:

  • Architettura come AForge.NET/Accord.NET.
  • Esegui in entrambi gli ambienti con lo stesso codice, desktop e Android.
  • Contiene diversi filtri in parallelo.
  • Lo sviluppo è a pieno ritmo.

Il Catalano Framework è un framework per il calcolo scientifico per Java e Android. Il progetto è iniziato come una porta iniziale delle numerose funzionalità dei framework AForge.NET e Accord.NET per .NET, ma è in costante crescita con funzionalità più avanzate che vengono ora condivise tra tali progetti.

Esempio:

FastBitmap fb = new FastBitmap(bitmap);

Grayscale g = new Grayscale();
g.applyInPlace(fb);

Threshold t = new Threshold(120);
t.applyInPlace(fb);

bitmap = fb.toBitmap();

//Show the result

imo l'approccio migliore sta usando Sistema di elaborazione delle immagini GraphicsMagick con im4java come interfaccia a riga di comando per Java.

Ci sono molti vantaggi di GraphicsMagick, ma uno per tutti:

  • GM viene utilizzato per elaborare miliardi di file nella foto più grande del mondo siti (ad esempio Flickr ed Etsy).

http://im4java.sourceforge.net/ - se stai eseguendo Linux biforcando un nuovo il processo non è costoso.

Per strumenti commerciali, potresti provare Snowbound.

http://www.snowbound.com/

La mia esperienza con loro è in qualche modo datata, ma ho trovato la loro API Java Imaging molto più facile da usare rispetto a JAI e molto più veloce.

Anche il supporto clienti e gli esempi di codice sono stati molto buoni.

Il software di visione RoboRealm list menziona JHLabs e NeatVision tra molte altre librerie non basate su Java.

Non posso dire che sia il "migliore" libreria, ma penso che tu possa provare questo: http://algart.net/java/AlgART/ È una libreria Java open source che supporta "smart" quotata in modo generalizzato matrici e matrici con elementi di diversi tipi (da 1 bit a 64 bit in virgola mobile), tra cui l'elaborazione di immagini 2D, 3D e multidimensionali e altri algoritmi, lavorando con matrici e matrici. Purtroppo in questo momento non contiene abbastanza demo ed esempi, ma, d'altra parte, contiene molti JavaDocs. È stato alla base del software commerciale (SIMAGIS) per diversi anni, ma ora è open-source.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top