2010-05-30 13 views
0

J'utilise une classe (DisplayContainer) de tenir une RenderedOp image qui doit être affiché à l'utilisateur:Comment récupérer un pixel dans une image tiff (chargé avec JAI)?

RenderedOp image1 = JAI.create("tiff", params); 
DisplayContainer d = new DisplayContainer(image1); 
JScrollPane jsp = new JScrollPane(d); 

// Create a frame to contain the panel. 
Frame window = new Frame(); 
window.add(jsp); 
window.pack(); 
window.setVisible(true); 

La DisplayContainer classe ressemble à ceci:

import java.awt.event.MouseEvent; 
import java.awt.geom.AffineTransform; 

import javax.media.jai.RenderedOp; 

import com.sun.media.jai.widget.DisplayJAI; 

public class DisplayContainer extends DisplayJAI { 

    private static final long serialVersionUID = 1L; 
    private RenderedOp img; 

    // Affine tranform 
    private final float ratio = 1f; 
    private AffineTransform scaleForm = AffineTransform.getScaleInstance(ratio, ratio); 

    public DisplayContainer(RenderedOp img) { 
     super(img); 
     this.img = img; 
     addMouseListener(this); 
    } 

    public void mouseClicked(MouseEvent e) { 
     System.out.println("Mouseclick at: (" + e.getX() + ", " + e.getY() + ")"); 
     // How to retrieve the RGB-value of the pixel where the click took 
     // place? 
    } 

    // OMISSIONS 

} 

Ce que je voudrais savoir comment est-ce que la valeur RVB du pixel cliqué peut être obtenue?

Répondre

0

Si le source est un BufferedImage, vous pouvez utiliser getRGB(), comme indiqué here.

+0

Je ne suis pas sûr de ce que vous entendez par source mais RenderedOp implémente RenderedImage –

+0

'source' est un champ dans' DisplayContainer', hérité de 'DisplayJAI'. Si vous ajoutez à 'DisplayContainer' un' BufferedImage', il sera là pour vous. – trashgod

+0

Le champ source est un RenderedImage. Une image tiff peut-elle être représentée comme une image buffered? BufferedImage img = ImageIO.read (nouveau fichier ("low.tiff")); ne fonctionne pas ... –

Questions connexes