Я получаю несколько изображений в папке изображений для обработки. В настоящее время у меня есть только 1 строка кода:
im = new ImageIcon("Images/"+imageindex+".gif"); \\(1)
вместе с переменной imageindex и другой переменной (imagecount), отслеживающей количество изображений. Тем не менее, это заставляет меня называть мои изображения "0.gif", "1.gif", ... "(n-1) .gif", если я хочу, чтобы в папке было n изображений, и каждый раз настраивал их соответствующим образом. добавить новое изображение.
Мне интересно, есть ли какой-нибудь способ выбрать i-е изображение в папке «Изображения», предпочтительно с помощью метода, который не требует создания массива изображений для доступа к массиву (поскольку это будет пустой тратой) ; изображения уже есть, и повторное копирование их в более удобный формат для доступа к ним замедлит мою программу).
Редактировать: вот решение, которое не кажется оптимальным. Это то, о чем я говорил, когда упоминал о создании всего массива:
Добавьте следующее к объявлению двух переменных:
File folder = new File("Images");
File[] listOfFiles = folder.listFiles();
Заменить (1) на
im = new ImageIcon("Images\\"+listOfFiles[imageindex].getName()); \\(2)
Проблема в том, что создание всего массива только для доступа к именам файлов кажется медленным.
Обновление: я делал преобразование из ImageIcon в Image в BufferedImage, и в конечном процессе использовалось только буферизованное изображение. Оказывается, проще использовать
try {
bimg = ImageIO.read(listOfFiles[imageindex]);
} catch(IOException e) {
}
, что исключает использование изображений и значков изображений в целом. Однако это по-прежнему не решает основную проблему.