Программирование на языке Java


Работа с изображениями - часть 3


/p>

Теперь давайте рассмотрим программный пример, который использует ImageObserver для показа количества обработанных строк изображения и выводит эту информацию (переменная progress) на консоль:

/* <title>ObservedImageLoad</title>

* <applet code="ObservedImageLoad" width=290 height=140>

* <param name="img" value="mupk.gif">

* </applet>

*/

import java.applet.*;

import java.awt.*;

import java.awt.image.*;

public class ObservedImageLoad extends Applet

implements Runnable, ImageObserver {

Image art;

Dimension d;

int progress;

Thread motor;

boolean loaded;

public void init() {

art = getImage(getDocumentBase(), getParameter("img"));

loaded = false;

progress = 0;

}

public void paint(Graphics g) {

d = this.getSize();

loaded = g.drawImage(art, 0, 0, this);

}

public boolean imageUpdate(Image img, int info,

int x, int y, int width, int height) {

if((info & ALLBITS) != 1) {

if(progress<d.height) {

progress = progress + height;

}

System.out.println(progress + "/" + d.height);

return true;

}

else {

return false;

} }

public void start() {

motor = new Thread(this);

motor. start();

}

public void stop() {

motor.stop();

}

public void run() {

motor.setPriority(Thread.MIN_PRIORITY);

while(!loaded) { // update progress indicator (5 fps)

repaint();

try {

motor.sleep(200);

}

catch(InterruptedException e) {}

}

} }

Метод imageUpdate обрабатывает статус загрузки изображения. Информация о статусе передается через переменную info, с которой сравнивается статическая переменная ALLBITS. Если еще не получено все изображение, то мы добавляем величину heihgt к общему числу обработанных строк изображения. Для проверки этой концепции мы выводим количество обработанных строк изображения на консоль. Метод run перерисовывает апплет пять раз в секунду (каждые 200 миллисекунд) до тех пор, пока изображение art не загрузится. То, как долго монитор статуса загрузки будет работать, зависит от скорости передачи данных изображения по сети – ObservedImageLoad.html.




Начало  Назад  Вперед