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
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...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); } } }
Ho messo un pò di repaint qui e là ma non funziona...
Grazie a tutti per l'aiuto!
Simone

Rispondi quotando
)