ciao a tutti, sto realizzando un lettore di immagini tiff (Multilevello) in java, per ora vorrei iniziare ad implementare una funzione di zoom leggendo i vari livelli della foto solo che non riesco a capire perchè non me lo fa...
Se qualcuno fosse così gentile da aiutarmi!!!
Posto il codice

codice:
import java.awt.Button;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.renderable.RenderableImage;
import java.io.File;
import java.io.IOException;
import java.awt.Frame;
import java.awt.image.RenderedImage;
import javax.media.jai.widget.ScrollingImagePanel;
import javax.media.jai.NullOpImage;
import javax.media.jai.OpImage;
import com.sun.media.jai.codec.SeekableStream;
import com.sun.media.jai.codec.FileSeekableStream;
import com.sun.media.jai.codec.TIFFDecodeParam;
import com.sun.media.jai.codec.ImageDecoder;
import com.sun.media.jai.codec.ImageCodec;

public class MultiPageRead extends Frame {

    Panel pnlGenerale;
    ScrollingImagePanel panel;
    int imageToLoad;
    ImageDecoder dec;
    RenderedImage op;


    public MultiPageRead(String filename) throws Exception {

        setTitle("Multi page TIFF Reader");

        File file = new File(filename);
        SeekableStream s = new FileSeekableStream(file);

        TIFFDecodeParam param = null;

        dec = ImageCodec.createImageDecoder("tiff", s, param);

        System.out.println("Number of images in this TIFF: " +
                           dec.getNumPages());

        // Which of the multiple images in the TIFF file do we want to load
        // 0 refers to the first, 1 to the second and so on.
        imageToLoad = dec.getNumPages() - 3;

        /*
        RenderedImage op =
            new NullOpImage(dec.decodeAsRenderedImage(imageToLoad),
                            null,
                            OpImage.OP_IO_BOUND,
                            null);
         */
        
        panel = VisualizzaImmagine(dec,imageToLoad);
        // Display the original in a 800x800 scrolling window
        //panel = new ScrollingImagePanel(op, 800, 800);
        //add(panel);
        
        Panel pnl = new Panel();
        pnl.setSize(new Dimension(800,20));
        Button btnZoomIn = new Button("Zoom In");
        Button btnZoomOut = new Button("Zoom Out");
        Button btnExit = new Button("Exit");
        
        btnZoomIn.addActionListener(new ActionListener(){
			 
			public void actionPerformed(ActionEvent e) {
			 	try{
                                    panel = VisualizzaImmagine(dec,imageToLoad++);
                                    //gestire la visualizzazione con lo zoom
                                } catch (Exception ex) {
                                    ex.printStackTrace();
                                }
			}
		});
                
         btnZoomOut.addActionListener(new ActionListener() {
            
             public void actionPerformed(ActionEvent e) {
                    
                                //DeZoomare l'immagine
             }
        });
        
        btnExit.addActionListener(new ActionListener() {
            
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        
        pnl.add(btnZoomIn);
        pnl.add(btnZoomOut);
        pnl.add(btnExit);
        this.setLayout(new GridLayout(2,1));        
        add(panel);
        add(pnl);
    }
    
    public ScrollingImagePanel VisualizzaImmagine(ImageDecoder dec, int imageToLoad) throws Exception {
        
        RenderedImage op =
            new NullOpImage(dec.decodeAsRenderedImage(imageToLoad),
                            null,
                            OpImage.OP_IO_BOUND,
                            null);
        panel = new ScrollingImagePanel(op, 800, 800);
        return panel;
    }

    public static void main(String [] args) {

        String filename = "c:"+File.separator+"file.tif"; //args[0];

        try {
            MultiPageRead window = new MultiPageRead(filename);
            window.pack();
            window.show();
        } catch (Exception ioe) {
            System.out.println(ioe);
        }
    }
}
alla prezzione del bottone zoom in dovrebbe scalare di un livello e farmelo vedere... ma non me lo fa vedere... l'immagine rimane sempre al livello di quando la carica per la prima volta...
Ho messo un pò di repaint qui e là ma non funziona...

Grazie a tutti per l'aiuto!

Simone