«Масштаб» означает пару вещей. Вам нужно как минимум обрезать изображение, и вы можете захотеть увеличить его. Или вы можете зарезервировать масштабирование только для отображения.
CGImage
Чтобы обрезать его, используйте фильтр CICrop.
Для масштабирования используйте либо фильтр CILanczosScaleTransform, либо фильтр CIAffineTransform.
Чтобы обрезать и масштабировать его, используйте оба фильтра. Просто передайте вывод обрезки в качестве ввода масштаба.
NSImage
Кадрирование и масштабирование выполняются здесь одинаково. Вам нужно будет создать новый пустой NSImage нужного размера (будь то размер исходного кадрирования, если вы не увеличите, или увеличенный размер, если вы увеличите), заблокируйте фокус на нем, нарисуйте прямоугольник кадрирования из исходное изображение в ограничивающий прямоугольник конечного изображения и разблокировать фокус.
Если размер прямоугольника назначения не совпадает с размером исходного прямоугольника (обрезки), он масштабируется; если они имеют одинаковый размер, он будет просто копировать или составлять пиксель в пиксель.