Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Немного о работе с рисунками. 
:(
    Опции темы
Domestic Cat
Дата 31.1.2005, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Немного о работе с рисунками.

Вопрос. Почему в таком коде
Код

Image im = Toolkit.getDefaultToolkit().getImage("myImage.gif");
int width = im.getWidth(null);
int height = im.getHeight(null);

width и height получают значение -1?

Ответ. Нужно некоторое время пока Image загрузится. К моменту когда вы запрашиваете параметры рисунка вполне вероятно, что он еще не загружен, поэтому getWidth/Height возвращает -1.
Используйте
Код

  Image im = new ImageIcon("av.gif").getImage();


или

Код

MediaTracker mt = new MediaTracker(this); // this - Component
Image im = Toolkit.getDefaultToolkit().getImage("myImage.gif");
mt.addImage(im, 1); // 1 - ID
try {
      mt.waitForID(1);
} catch (InterruptedException e)
{
      e.printStackTrace();
}


Вопрос. Зачем методам getWidth(), getHeight() передается аргумент (обычно null)?

Ответ. Им передается ссылка на объект ImageObserver; если на момент выполнения запроса getWidth/Height рисунок неполностью загружен, вызываетса метод imageUpdate этого объекта.
Например:

Код

public class Test implements ImageObserver
{
   int width, height;
   test()
   {
       Image i = Toolkit.getDefaultToolkit().getImage("av.gif");
       width = i.getWidth(this);
       height = i.getHeight(this);
       System.out.println("Width = " + width + ", height = " + height);
       try
       {
           Thread.sleep(1000);
       } catch (InterruptedException ie) {}
       System.out.println("Now width = " + width + ", height = " + height);
   }
   
   public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height)
   {
       this.width = width;
       this.height = height;
       return true;
   }
   
   public static void main(String[] args)
   {
       new Test();
   }
}


Вопрос. Как из Image получить BufferedImage?

Ответ. Есть два способа:
Код

  Image im = new ImageIcon("av.gif").getImage();
  BufferedImage bi = new BufferedImage(im.getWidth(null), im.getHeight(null), BufferedImage.TYPE_INT_RGB);
  bi.getGraphics().drawImage(im, 0, 0, null);


Код

     bi = ImageIO.read(new File("img.gif"));



--------------------

PM   Вверх
AntonSaburov
Дата 1.2.2005, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Может лучше в FAQ ее переместить в AWT &Swing->Графика ?
PM MAIL WWW ICQ   Вверх
Domestic Cat
Дата 1.2.2005, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Я ее вчера поместил в Разное : JAVA-JAVA-002290; думаю ты прав smile


--------------------

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.