谁能给我一些关于如何解决这个问题以在 iPhone 应用程序上使用的想法。用户可以旋转和翻转图像缩略图,但我想保存这些转换,以便稍后将它们应用到全尺寸图像。我希望能够从应用的所有转换的字符串中计算出最简单的转换。我在下面提供了一些示例。
翻转H+翻转V = r180
翻转H+翻转V+翻转H = 翻转V
翻转V+翻转H+翻转V = 翻转H
r90CW+flipH+flipV+flipH+r180CCW = flipH+r90CCW
谁能给我一些关于如何解决这个问题以在 iPhone 应用程序上使用的想法。用户可以旋转和翻转图像缩略图,但我想保存这些转换,以便稍后将它们应用到全尺寸图像。我希望能够从应用的所有转换的字符串中计算出最简单的转换。我在下面提供了一些示例。
翻转H+翻转V = r180
翻转H+翻转V+翻转H = 翻转V
翻转V+翻转H+翻转V = 翻转H
r90CW+flipH+flipV+flipH+r180CCW = flipH+r90CCW
我了解您担心按顺序将每个转换应用于您的图像的成本;与此相反,您希望存储组合转换并仅应用一次。
如果这是正确的,那么您可以使用CGAffineTransform Reference中“修改仿射变换”部分中列出的方法。即,您将从基本的身份转换开始:
CGAffineTransform transform = CGAffineTransformIdentity;
然后您将按顺序应用所有转换并构建组合转换:
transform = CGAffineTransformRotate(transform, rotation);
transform = CGAffineTransformTranslate(transform, dx, dy);
...
您可以将其应用于您的图像。
编辑:
组合 2 个变换意味着将 2 个矩阵相乘。如果你只是组合旋转,你会得到一个具有不同值的旋转矩阵(0s 保持在相同的位置);如果您组合平移和旋转,那么您将获得一个新矩阵,其中包含 2 个以上的值(与旋转矩阵相比)。看看这个解释,非常直观。
仿射变换对于任何 iOS 版本都是完全可以的(它们确实是一个基本的东西),包括 iOS 5。