Допустим, у меня есть изображение размером 100x100. Я хочу разместить изображение на холсте большего размера, 500x500.
Мой текущий подход заключается в использовании UIGraphics для создания контекста, а затем рисования изображения в контексте.
UIGraphics.BeginImageContext(....);
ImageView.Draw (....);
Это прекрасно работает, но не так быстро, как хотелось бы для того, чем я занимаюсь. Я заметил, что CIFilters работают очень быстро. Можно ли разместить изображение на холсте большего размера с помощью CIFilters или другого метода, использующего GPU, а не CPU?? Я экспериментировал с CIFilters CICrop и CIPerspectiveTransform, но могу не похоже, чтобы получить желаемый результат...
Исходное изображение 100x100
Мое желаемое изображение результата 500x500. Я просто хочу взять изображение и увеличить его размер холста с помощью CIFilters или какой-либо операции с графическим процессором.
Я попытался сделать «обратную обрезку» с помощью CICrop, но это не сработало. Обратите внимание, что я указал размер CIVector как 500x500, хотя само изображение имеет размер 100x100, результирующее изображение полностью игнорировало это дополнительное пространство и обрезало его. Вот мой код:
CICrop crop = new CICrop();
crop.Image = ImageView.Image.CGImage;
crop.Rectangle = new CIVector(0, 0, 500, 500);
ImageView.Image = new UIImage(crop.OutputImage);
Console.WriteLine("ImageView.Image.size = "+ ImageView.Image.Size);