Метод copy
Копирование фрагментов изображений.
^картинка.copy[исходное_изображение](x1;y1;ширина1;высота1;x2;y2)
^картинка.copy[исходное_изображение](x1;y1;ширина1;высота1;x2;y2;ширина2;высота2;приближение_цвета)
Метод копирует фрагмент одного изображения в другое изображение. Это очень удобно использовать в задачах, подобных расстановке значков на карте. В качестве параметров методу передаются:
- исходное изображение;
- координаты (x1;y1) верхнего левого угла копируемого фрагмента;
- ширина и высота копируемого фрагмента;
- координаты (x2;y2), по которым будет вставлен копируемый фрагмент;
- опционально — новая ширина и высота вставляемого фрагмента (в этом случае происходит масштабирование), а также величина, характеризующая точность передачи цвета; чем она меньше, тем точнее цветопередача, но количество передаваемых цветов при этом уменьшается, и наоборот (по умолчанию эта величина равна 150).
Пример
$mygif[^image::load[test.gif]]
$resample_width($mygif.width * 2)
$resample_height($mygif.height * 2)
$mygif_new[^image::create($resample_width;$resample_height)]
^mygif_new.copy[$mygif](0;0;20;30;0;0;$mygif_new.width;$mygif_new.height)
$response:body[^mygif_new.gif[]]
В данном примере мы создаем два объекта класса image. Первый создан на основе существующего GIF-файла. Второй — вдвое больший по размеру, чем первый, создается самим Parser, после чего в него мы копируем фрагмент первого размером 20×30 пикселей и «растягиваем» этот фрагмент на всю ширину и высоту второго рисунка. Последняя строчка кода выводит увеличенный фрагмент на экран. Данный подход можно применять только для изображений, которые не требуется выводить с хорошим качеством.