2012-05-20 15 views
14

In una normale applicazione Java, ho una BufferedImage che vorrei manipolare con ImageJ. Ho una macro che è esattamente ciò che ho bisogno di eseguire. Sospetto che il primo passo sia creare un oggetto ImagePlus, ma non sono sicuro di come eseguire una macro sull'oggetto ImagePlus da Java. Sezione 7.3 del tutorial ImageJ trovato here dice:Come posso utilizzare ImageJ come libreria per un'applicazione Java separata?

Se si decide di utilizzare ImagePlus come formato di immagine interna è possibile utilizzare anche tutti i plugin e macro dalla distribuzione ImageJ così come tutti gli altri plugin ImageJ.

Ma non indica come farlo. Se qualcuno potesse spiegare come, o indicarmi una risorsa che lo fa, lo apprezzerei molto.

risposta

3

Ecco un esempio di codice che si apre un'immagine, inverte e lo salva di nuovo:

import ij.ImagePlus; 
import ij.io.FileSaver; 
import ij.process.ImageProcessor; 

ImagePlus imgPlus = new ImagePlus("path-to-sample.jpg"); 
ImageProcessor imgProcessor = imgPlus.getProcessor(); 
imgProcessor.invert(); 
FileSaver fs = new FileSaver(imgPlus); 
fs.saveAsJpeg("path-to-inverted.jpg"); 

E qui c'è un codice di esempio che mostra come manipolare un'immagine per renderla scala di grigi:

BufferedImage bufferedImage = imgProcessor.getBufferedImage(); 
for(int y=0;y<bufferedImage.getHeight();y++) 
{ 
    for(int x=0;x<bufferedImage.getWidth();x++) 
    { 
     Color color = new Color(bufferedImage.getRGB(x, y)); 
     int grayLevel = (color.getRed() + color.getGreen() + color.getBlue())/3; 
     int r = grayLevel; 
     int g = grayLevel; 
     int b = grayLevel; 
     int rgb = (r<<16) | (g<<8) | b; 
     bufferedImage.setRGB(x, y, rgb); 
    } 
} 
ImagePlus grayImg = new ImagePlus("gray", bufferedImage); 
fs = new FileSaver(grayImg); 
fs.saveAsJpeg("path-to-gray.jpg"); 

Spero che ti aiuti a iniziare :)

+0

Sarebbe applicabile anche per PNG? o altri formati di immagine? – bpunzalan

Problemi correlati