2016-11-02 1 views
0

Если название нечеткое, откройте приложение «Фотографии» на вашем iPhone и отредактируйте изображение. Попробуйте инструмент поворота. Рамка не вращается, только изображение делает и увеличивает масштаб, чтобы оставаться в кадре.Swift - Повернуть изображение, затем увеличить и обрезать, чтобы сохранить соотношение сторон ширины и высоты.

Вот фотография этого:

Rotation photo app tool

Я хотел бы скопировать это поведение в моем Swift проекта. Это означает поворот изображения (это может быть UIImage, CIImage или CGImage), но обрезать его, сохраняя одинаковое соотношение ширины и высоты.

С какого места следует начинать? Спасибо за ваше время.

ответ

1

приложение фильтр для этого. CIStraightenFilter поворачивает изображение на любую сумму, растягивая его и обрезка его сохранить первоначальные размеры:

let image: CIImage = /* my image 480x320 */ 
let rotated = image.applyingFilter("CIStraightenFilter", 
    withInputParameters: [ kCIInputAngleKey: Double.pi/6 ]) // 30 degrees 
rotated.extent // still 480x320 

Вот некоторые примеры (повороты ноль, 15 °, 30 ° и 45 °):

no rotation rotate by π/12 (15 degrees) rotate by π/6 (30 degrees) rotate by π/4 (45 degrees)

+0

Спасибо это хорошо работает! Я не знал об этом фильтре. Я добавил эту строку кода для создания CGImage, если кому-то это необходимо: | let cgImage = context.createCGImage (повернут, из: rotated.extent) | – Moon

Смежные вопросы