Увеличение на CIImage или NSImage? - PullRequest
0 голосов
/ 06 июля 2010

Я снимаю фотографии с веб-камеры в своем приложении Какао и хочу увеличить центр получаемого изображения. Я начинаю с получения CIImage и в итоге сохраняю NSImage.

Как бы я увеличил масштаб любого из этих объектов?

1 Ответ

1 голос
/ 06 июля 2010

«Масштаб» означает пару вещей. Вам нужно как минимум обрезать изображение, и вы можете захотеть увеличить его. Или вы можете зарезервировать масштабирование только для отображения.

CGImage

Чтобы обрезать его, используйте фильтр CICrop.

Для масштабирования используйте либо фильтр CILanczosScaleTransform, либо фильтр CIAffineTransform.

Чтобы обрезать и масштабировать его, используйте оба фильтра. Просто передайте вывод обрезки в качестве ввода масштаба.

NSImage

Кадрирование и масштабирование выполняются здесь одинаково. Вам нужно будет создать новый пустой NSImage нужного размера (будь то размер исходного кадрирования, если вы не увеличите, или увеличенный размер, если вы увеличите), заблокируйте фокус на нем, нарисуйте прямоугольник кадрирования из исходное изображение в ограничивающий прямоугольник конечного изображения и разблокировать фокус.

Если размер прямоугольника назначения не совпадает с размером исходного прямоугольника (обрезки), он масштабируется; если они имеют одинаковый размер, он будет просто копировать или составлять пиксель в пиксель.

...