Загрузка изображений в массив в Java

#java #image #awt

#java #изображение #awt

Вопрос:

Я пытаюсь загрузить некоторые изображения в массив для апплета, и я знаю, что должен быть лучший способ сделать это?

 public class Images extends Applet
{
    Image card[]=new Image[45];
    public void init()
    {
        img[0]= getImage( getDocumentBase(),"pics/1.gif");
        img[1]= getImage( getDocumentBase(),"pics/2.gif");
.....
  

Комментарии:

1. Вероятно, лучше всего иметь какой-то конфигурационный файл, в котором перечислены загружаемые изображения и который используется for-loop для загрузки каждого из них в зависимости от потребностей конфигурации

2. Я должен был указать, что имена изображений не все одинаковы — на случай, если это имеет значение

3. Вы хотите повысить производительность? Попробуйте использовать стратегию отложенной загрузки.

Ответ №1:

Даже если имена файлов не предсказуемы на основе числа, у вас все равно может быть их коллекция. Например:

 // Common prefix removed for brevity
private static final String[] IMAGE_FILES = {
    "img1.gif", "happy.gif", "sad.gif" /* etc */
};
  

Затем:

 Image[] images = new Image[IMAGE_FILES.length];
for (int i = 0; i < images.length; i  ) {
    images[i] = getImage(getDocumentBase(), "pics/"   IMAGE_FILES[i]);
}
  

(Вполне может быть более приятный способ преобразования одного массива в другой с использованием лямбда-выражения в Java 8 — я не проверял.)

Мне не ясно, что Images класс — это хорошая идея, хотя на самом деле это не похоже на то, что вы обычно создаете экземпляр. Я бы также настоятельно рекомендовал использовать закрытые поля.