Jak zapisać obrazek do pliku

0

Hej, mam problem odnośnie zapisu obrazka do pliku:

         try {
            JFileChooser chooser = new JFileChooser();
            chooser.showSaveDialog(null);
            File f = chooser.getSelectedFile();
            String name = f.getName();
            String ext = name.substring(name.lastIndexOf(".")+1).toLowerCase();
            if(!ext.equals("png") && !ext.equals("bmp") &&   !ext.equals("dib") &&   !ext.equals("jpg")) {
                ext = "png";
                f = new java.io.File(f.getAbsolutePath()+".png");
            }
            
            ImageIO.write( (RenderedImage)jScrollPane1, ext.toUpperCase(), f);
        } catch (IOException ex) {
            Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
      

w linijce ImageIO.write( (RenderedImage)jScrollPane1, ext.toUpperCase(), f); mam błąd typu: Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JPanel cannot be cast to java.awt.image.RenderedImage

0

No i czego nie rozumiesz? Próbujesz wmówić Javie że ScrollPane jest Obrazkiem a java protestuje ;] Ja się nie dziwie.

0

a jak pobrać obrazek z jScrollPane, żebym mógł go zapisać?

0

Ale scrollPane nie ma żadnego obrazka. Przecież to jest tyko panel wewnątrz którego możesz mieć cośtam wiekszego od tego panelu i wtedy będziesz mógł scrollować.

0

Mam obrazek wczytany do scrollPane i chcę coś z nim zrobić, a potem go zapisać. W jaki sposób to zrobić?

0

Pokaż jak "wczytałeś obrazek do scollPane"...

0
     BufferedImage sourceImage = null;  
     
     
     JFileChooser chooser = new JFileChooser();
     chooser.showOpenDialog(null);
     File f = chooser.getSelectedFile();
        try {
            sourceImage = ImageIO.read(f);
        } catch (IOException ex) {
            Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
     JLabel l = new JLabel(new ImageIcon(sourceImage));
     jScrollPane1.add(l);
0

No to widzisz chyba że obrazek wcale nie jest w srollPane, prawda? Tylko że jest jednym z obiektów które do niego wrzuciłeś? A rozumiesz że takie add możesz wywołać i 100 razy? To tak jakbyś miał szafę do której możesz wkładać książki. Włożyłeś swoją ulubioną książkę - Twilight - a teraz próbujesz czytać szafę. Rozumiesz chyba ze to niedorzeczne? A co jakby w szafie było 10 książek? (co jakbyś dodał 10 obrazków do scrollpanel?)

Możesz się bawić w getComponent() albo getComponents() ale może kepiej po prostu ten obrazek gdzieś sobie zapamiętać? ;]

1 użytkowników online, w tym zalogowanych: 0, gości: 1