Как выделить фрагмент изображения
В листинге 15.2 выделяется фрагмент изображения и выводится на экран в увеличенном виде. Кроме того, ниже выводятся изображения, увеличенные с помощью классов ReplicateScaleFilter и AreaAveragingScaleFilter.
Листинг 15.2. Примеры масштабирования изображения.
import java.awt.*; import java.awt.event.*; import java.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 <strong>{</strong> 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. Масштабированное изображение