Меню сайта

Урок 18. Работа с изображениями в Java

Java работает с наиболее популярными во Всемирной паутинеформатами изображений — JPEG и GIF. JPEG лучше подходит для естественных цветныхизображений, таких, как фотографии, а формат GIF является наилучшими дляграфических эмблем, изображений кнопок, и т.п.

Сначала мы загрузим изображение с помощью очень короткойпрограммы. Затем мы научимся использовать классы, которые управляют загрузкойодного или нескольких изображений. Кроме того, существует набор абстрактныхклассов, которые помогают создать поток изображений, и фильтры, позволяющиеобращаться к отдельным элементам изображений и модифицироватьих.

Простой загрузчик изображений

Простейший случай — загрузка в страницу одиночного изображения.Вот маленький апплет, выполняющий эту работу:

/* &lt-title&gt-SimpleImageLoad&lt-/title&gt-

*&lt-applet code=»SimpleImageLoad» width=300 height=150&gt-

* &lt-param name=»img» value=»mupk.gif»&gt-

* &lt-/applet&gt-

*/

import java.applet.*-

import java.awt.*-

public class SimpleImageLoad extends Applet {

Image art-

public void init() {

art = getImage(getDocumentBase(), getParameter(«img»))-

}

public void paint(Graphics g) {

g.drawImage(art, 0, 0, this)-

} }

Метод paint использует drawlmage с четырьмя аргументами: этоссылка на изображение art, координаты левого верхнего угла рисунка х, у и объекттипа ImageObserver. Мы поговорим подробнее об ImageObserver в следующемпараграфе- здесь мы использовали this в качестве имени ImageObserver, поскольку он встроен вапплет. Когда этот апплет запускается, он в методе init начинает загрузку art.Процесс загрузки изображения по сети хорошо заметен – SimpleImageLoad.html, поскольку встроенный интерфейс ImageObserver вызываетпроцедуру paint при каждом поступлении новой порции данных из сети. Вы можетеиспользовать ImageObserver для отслеживания загрузки изображения, а в это времявыводить на экран другую информацию.

ImageObserver

ImageObserver — это абстрактный интерфейс, используемый дляполучения сообщения о создании изображения, Метод imageUpdate из ImageObserver —это все, что вы должны реализовать в своем апплете для его использования. В товремя, как вы получаете информацию о загрузке, вы можете показывать любуюпонравившуюся вам мультипликацию, индикатор степени завершения загрузки илилюбую другую заставку. Для использования ImageObserver в своем подклассе Appletвы должны добавить в него строку implement ImageObserver, как показано в этомфрагменте программы:

public class MyApplet extends Applet implement ImageObserver{

Затем вам придется вставить в свой класс метод imageUpdate для интерфейсаImageObserver, как показано в следующем фрагменте :

public boolean imageUpdate(Image img, int status,

int x, int у int width, int height) {

if((status &amp- ALLBITS) != 1) {

System.out.println(«Still processing the image»)-

return true-

}

else {

System.out.println(«Done processing the image»)-

return false-

} }

Метод imageUpdate вызывается с изображением Image, котороенаходится в процессе изменения, целым параметром status, отражающим состояниеизменения, и с координатами прямоугольника (x, у, width, height), которыесоответствуют различным величинам в зависимости от информационных флагов,перечисленных ниже. ImageUpdate должен возвращать false по окончании загрузкиизображения и true — если изображение еще обрабатывается.

Целая переменная status поразрядно проверяется на наличиеодного или нескольких флагов. Возможные флаги и информация, которую они несут,перечислены ниже:


WIDTH

Ширина изображения доступна и может быть взята из аргументаwidth.

Категория: Обучение Java | Дата: 19.04.13

Меню раздела
Блок