2012-05-20 23 views
14

Trong một ứng dụng Java thông thường, tôi có một BufferedImage mà tôi muốn thao tác với ImageJ. Tôi có một macro đó là chính xác những gì tôi cần phải thực hiện. Tôi nghi ngờ rằng bước đầu tiên là tạo một đối tượng ImagePlus, nhưng tôi không chắc chắn làm thế nào để chạy macro trên đối tượng ImagePlus từ bên trong Java. Mục 7.3 của hướng dẫn ImageJ tìm thấy here nói:Làm cách nào để sử dụng ImageJ làm thư viện cho một ứng dụng Java riêng biệt?

Nếu bạn quyết định sử dụng ImagePlus như là định dạng hình ảnh nội bộ của bạn, bạn cũng có thể sử dụng tất cả các plugin và macro từ phân phối ImageJ cũng như tất cả các plugin ImageJ khác.

Nhưng không cho biết cách thực hiện. Nếu ai đó có thể giải thích làm thế nào, hoặc chỉ cho tôi hướng tới một nguồn tài nguyên, tôi sẽ rất cảm kích nó.

Trả lời

3

Dưới đây là một số mẫu mã mở ra một hình ảnh, đảo ngược nó và lưu nó lại:

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"); 

Và đây là mã mẫu cho biết cách thao tác một hình ảnh để biến hình ảnh thành màu xám:

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"); 

Tôi hy vọng nó sẽ giúp bạn bắt đầu :)

+0

Điều này có thể áp dụng cho PNG không? hoặc các định dạng hình ảnh khác? – bpunzalan