ciao!
io ho questo metodo qui che ridimensiona i file:
codice:
public void resizeImage(File inputImage, String dir, int width, int height) throws IOException {
Image image = ImageIO.read(inputImage);
Image newImage = image.getScaledInstance(width, height, Image.SCALE_SMOOTH);
BufferedImage buf = new BufferedImage(newImage.getWidth(null), newImage.getHeight(null), BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = buf.createGraphics();
g2.drawImage(newImage, 0, 0, null);
g2.dispose();
String ext = FilenameUtils.getExtension(inputImage.getName());
ImageIO.write(buf, ext, new File(dir + inputImage.getName()));
}
se nel percorso di inputImage ci sono degli spazi, l'immagine non viene processata.
le immagini vengono scelte da un utente a partire da una directory, e agguinte ad una lista da qui:
codice:
public ArrayList<String> getImages2(Path directory, int depth) throws IOException {
ArrayList<String> listImages = new ArrayList<>();
Files.walkFileTree(directory, EnumSet.of(FileVisitOption.FOLLOW_LINKS), depth, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
if (file.toFile().getName().toLowerCase().endsWith(".jpg") || file.toFile().getName().toLowerCase().endsWith(".png")) {
listImages.add(file.toFile().toString());
}
return FileVisitResult.CONTINUE;
}
});
return listImages;
}
in sostanza:
-l'utente avvia il programma e sceglie una dirctory da un jfilechooser
-vengono controllati i vari file e in caso aggiunti alla lista (getImages2)
-la lista viene processata, e ogni immagine modificata (resizeImage)
come posso fare per i path con spazi?