19/08/10 14:57
Bonny
Salve a tutti, sto sviluppando una semplice applicazione che mi permette di visualizzare delle immagini.
Ho esteso la classe JPanel e ridefinito il metodo paintComponent per visualizzare le immagini, fin qui tt ok!
Quando l'utente preme il tasto "apri" invoco un metodo che mi restituisce un array di BufferedImage[] ; all'interno del metodo appare una JFileChooser per selezionare i file
Questo funziona solo con meno di 15 immagini selezionate
da come eccezione "java.lang.OutOfMemoryError: Java heap space"
Poi ho provato con un ArrayList() perchè prob è un problema di memoria, ma non itera più di 15 elementi.
Forse è meglio se al pannello passo solo la var di tipo File e li carico l'immagine con ImageIO(File name);
Non riesco a capire il motivo di questa eccezione.
Ho esteso la classe JPanel e ridefinito il metodo paintComponent per visualizzare le immagini, fin qui tt ok!
Quando l'utente preme il tasto "apri" invoco un metodo che mi restituisce un array di BufferedImage[] ; all'interno del metodo appare una JFileChooser per selezionare i file
public BufferedImage[] readImage(){ JFileChooser dlgFile = new JFileChooser(); FileNameExtensionFilter filter = new FileNameExtensionFilter("All Files","jpg","JPEG","GIF"); dlgFile.setFileFilter(filter); dlgFile.setMultiSelectionEnabled(true); //dlgFile.setDragEnabled(true); BufferedImage bimg = null; if(dlgFile.showOpenDialog(null)==JFileChooser.APPROVE_OPTION){ try { File[] file = dlgFile.getSelectedFiles(); bimg = new BufferedImage[file.length]; for(int i = 0;i < file.length; i++){ bimg[i] = ImageIO.read(file[i]); } } catch (Exception ex) { System.out.println(ex.getMessage()); } } return bimg; }
Questo funziona solo con meno di 15 immagini selezionate
da come eccezione "java.lang.OutOfMemoryError: Java heap space"
Poi ho provato con un ArrayList() perchè prob è un problema di memoria, ma non itera più di 15 elementi.
public List<BufferedImage> readImage(){ JFileChooser dlgFile = new JFileChooser(); FileNameExtensionFilter filter = new FileNameExtensionFilter("All Files","jpg","JPEG","GIF"); dlgFile.setFileFilter(filter); dlgFile.setMultiSelectionEnabled(true); //dlgFile.setDragEnabled(true); List<BufferedImage> listmg = new ArrayList<BufferedImage>(); if(dlgFile.showOpenDialog(null)==JFileChooser.APPROVE_OPTION){ try { File[] file = dlgFile.getSelectedFiles(); for(File x : file){ listmg.add(ImageIO.read(x)); } } catch (Exception ex) { System.out.println(ex.getMessage()); } } return listmg; }
Forse è meglio se al pannello passo solo la var di tipo File e li carico l'immagine con ImageIO(File name);
Non riesco a capire il motivo di questa eccezione.
aaa