Обычный способ масштабирования изображения - это выделить новый NSImage
с желаемыми меньшими размерами, lockFocus
на нем, и нарисовать исходное изображение в NSImage
(unlockFocus
, когда вы закончите,конечно).Оттуда вы можете сериализовать изображение в различных форматах, используя либо API-интерфейсы CoreGraphics, либо, если ваши потребности просты, метод TIFFRepresentation
на NSImage
.
Что касается работы с Core Data, ярекомендую хранить ваше изображение в отдельном объекте, имеющем отношение к объекту, которому он принадлежит.Причина в том, что Core Data загружает все данные для объекта сразу при извлечении, поэтому, когда вам не нужны данные изображения (которые могут быть достаточно большими, даже для небольших изображений), вы можете избежать медленной производительности и нехватки памятизагружать его в память при каждой загрузке.Вы можете наложить временное свойство image
на основной объект, который лениво загружает / сохраняет изображение по мере необходимости.
Когда ваше изображение хорошо обновляет свою привязку с новым изображением, это было бы идеальной возможностью для изменения масштаба исохранить изображение в вашем объекте данных.То есть вы передадите полноразмерное изображение объекту данных через связывание, и оно будет обрабатывать изменение масштаба.