Иллюстрированный самоучитель по Java
Как
выделить фрагмент изображения
В листинге 15.2 выделяется фрагмент
изображения и выводится на экран в увеличенном виде. Кроме того, ниже выводятся
изображения, увеличенные с помощью классов
RepiicateScaieFiiter
и AreaAveragingScaleFilter.
Листинг 15.2.
Примеры масштабирования изображения
import j ava.awt.*;
import j ava.awt.event.*;
import j ava.awt.image.*;
class CropTest
extends Frame{
private Image
img, cropimg, replimg, averimg;
CropTest(String
s){ super (s) ;
// 1. Создаем
изображение — объект класса Image
img = getToolkit().getlmage("javalogo52x88.gif");
// 2. Создаем
объекты-фильтры:
// а) выделяем
левый верхний угол размером 30x30
CropImageFilter
crp = new CropImageFilter(0, 0, 30, 30);
// б) увеличиваем
изображение в два раза простым методом
RepiicateScaieFiiter
rsf = new RepiicateScaieFiiter(104, 176);
// в) увеличиваем
изображение в два раза с усреднением
AreaAveragingScaleFilter
asf = new AreaAveragingScaleFilter(104, 176);
// 3. Создаем
измененные изображения
cropimg = createlmage(new
FilteredlmageSource(img.getSource(), crp));
replimg = createlmage(new
FilteredlmageSource(img.getSource(), rsf)};
averimg = createlmage(new
FilteredlmageSource(img.getSource(), asf));
setSize(400, 350);
setvisible(true); }
public void paint(Graphics
gS
{
g.drawlmage(img, 10, 40, this);
g.drawlmage(cropimg,
150, 40, 100, 100, this);
g.drawlmage(replimg,
10, 150, this);
g.drawlmage(averimg,
150, 150, this);
}
public static
void main(String[] args){
Frame f= new CropTest("
Масштабирование");
f.addWindowListener(new
WindowAdapter(){
public void windowClosing(WindowEvent
ev){
System.exit(0);
}
});
}
}
На рис. 15.3 слева сверху показано
исходное изображение, справа — увеличенный фрагмент, внизу — изображение, увеличенное
двумя способами.
Рис. 15.3.
Масштабированное изображение