Swift - 旋转图像,然后放大并裁剪以保持宽高比不变

时间:2016-11-02 20:29:18

标签: swift image rotation transform crop

如果标题不清晰,请在iPhone上打开“照片”应用并编辑照片。尝试旋转工具。框架不会旋转,只有图像会旋转并放大以保留在框架中。

以下是这张照片:

Rotation photo app tool

我想在我的Swift项目中复制这个comportment。这意味着旋转图像(可以是UIImage,CIImage或CGImage),但要保持相同的宽高比。

我应该从哪里开始?谢谢你的时间。

1 个答案:

答案 0 :(得分:2)

一个应用程序是一个过滤器。 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)