Imagecopy
copy. Копирование фрагментов изображений | |
^картинка.copy[исходное_изображение](x1;y1;ширина1;высота1;x2;y2) ^картинка.copy[исходное_изображение](x1;y1;ширина1;высота1;x2;y2;ширина2;высота2;приближение цвета)
Метод копирует фрагмент одного изображения в другое изображение. Это очень удобно использовать в задачах, подобных расставлению значков на карте. В качестве параметров методу передаются:
1. | Исходное изображение
|
2. | координаты (X1;Y1) верхнего левого угла копируемого фрагмента |
3. | ширина и высота копируемого фрагмента |
4. | координаты (X2;Y2) по которым будет вставлен копируемый фрагмент |
5. | в качестве необязательных параметров могут быть заданы новая ширина и высота вставляемого фрагмента (в этом случае происходит масштабирование), а также величина, характеризующая точность передачи цвета. Чем она меньше, тем точнее цветопередача, но количество передаваемых цветом уменьшается и наоборот (по умолчанию равна 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 и «растягиваем» этот фрагмент на всю ширину и высоту второго рисунка. Последняя строчка кода выводит увеличенный фрагмент на экран. Данный подход можно применять только для изображений, которые не требуется выводить с хорошим качеством.