русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ImageFilterDemo.java


Дата добавления: 2015-06-12; просмотров: 604; Нарушение авторских прав


Класс ImageFilterDemo является каркасом апплета для других фильтров изображений. Он использует простой менеджер компоновки BorderLayout, с панелью в позиции South, содержащей кнопки, которые будут представлять каждый фильтр. Объект Label занимает слот North для информационных сообщений о ходе работы фильтра. Изображение (которое инкапсулировано в Canvas подклассе LoadedImage, описанном позже) размещается в слоте Center. Мы анализируем кнопки фильтров вне параметра filters тега <param> (где они отделены значками +) — с помощью класса StringTokenizer.

Метод ActionPerformed() интересен тем, что он использует метку кнопки как имя класса фильтра, который он пробует загрузить с помощью метода newInstance():

pif = (PlugInFilter) Class.forName(а).newInstance();

Данный метод устойчив и выбирает адекватное действие, даже если кнопка не соответствует подходящему классу, реализующему PluglnFilter.

Программа 139. Фильтрация изображения

// Файл ImageFilterDemo.java

/*

<applet code = ImageFilterDemo width = 350 height = 450>

<param name = img value = "brullov.jpg">

<param name = filters value = "Grayscale+Invert+Contrast+Blur+Sharpen">

</applet>

*/

import java.applet.*;

import java.awt.*;

import java.awt.event.*;

import java.util.*;

public class ImageFilterDemo extends Applet implements ActionListener {

Image img;

PlugInFilter pif;

Image fimg;

Image curImg;

LoadedImage lim;

Label lab;

Button reset;

public void init() {

setLayout(new BorderLayout ());

Panel p = new Panel();

add(p, BorderLayout.SOUTH);

reset = new Button("Reset");

reset.addActionListener(this);

p.add(reset);

StringTokenizer st =

new StringTokenizer(getParameter("filters"), "+");

while(st.hasMoreTokens()) { // Разборка строки с названиями кнопок



Button b = new Button(st.nextToken()); // Создание кнопки

b.addActionListener(this); // Регистрация кнопки

p.add(b); // Добавление кнопки

}

lab = new Label("");

add(lab, BorderLayout.NORTH);

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

lim = new LoadedImage (img);

add(lim, BorderLayout.CENTER);

}

public void actionPerformed(ActionEvent ae) {

String a = "";

try {

a = (String)ae.getActionCommand();

if (a.equals("Reset")) {

lim.set (img);

lab.setText("Normal");

}

else {

pif = (PlugInFilter) Class.forName(a).newInstance();

fimg = pif.filter(this, img);

lim.set(fimg);

lab.setText("Filtered: " + a);

}

repaint();

}

catch (ClassNotFoundException e) {

lab.setText(a + " not found");

lim.set(img);

repaint();

}

catch (InstantiationException e) {

lab.setText("could't new " + a);

}

catch (IllegalAccessException e) {

lab.setText("no access: " + a);

}

}

}

Как видно из кода апплета, в нем использованы классы PlugInFilter, LoadedImage, которые должны быть добавлены в программу. Состав проекта в среде Eclipse приведен на рис.8.

Рис. 8. Состав проекта

После полной разработки проекта для запуска апплета надо подготовить html-файл, в котором задать два параметра, один - с указанием файла изображания и второй - с названиями фильтров, разделенных знаком "+". Далее приведен пример такого html-файла:

<applet code = ImageFilterDemo width = 550 height = 550>

<param name = img value = "brullov.jpg">

<param name = filters value = "Grayscale+Invert+Contrast+Blur+Sharpen">

</applet>

При запуске апплета выводится изображение из указанного файла, рис.8.

Рис. 8. Исходное изображение



<== предыдущая лекция | следующая лекция ==>
Фильтр RGBImageFilter | LoadedImage.java


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.343 сек.