我目前正在研究CIPerspectiveTransform
,我似乎无法找到它的确切行为。至少我有一个想法,但我不太确定。我会公开我在这里发现的。
正如我们在Core Image Filter Reference中看到的那样,类型有 4 个属性CIVector
:
inputTopLeft
A CIVector object whose attribute type is CIAttributeTypePosition and whose display name is Top Left.
Default value: [118 484]
inputTopRight
A CIVector object whose attribute type is CIAttributeTypePosition and whose display name is Top Right.
Default value: [646 507]
inputBottomRight
A CIVector object whose attribute type is CIAttributeTypePosition and whose display name is Bottom Right.
Default value: [548 140]
inputBottomLeft
A CIVector object whose attribute type is CIAttributeTypePosition and whose display name is Bottom Left.
Default value: [155 153]
如您所见,默认值是非常随意的。但这会给给定图像带来透视效果。但是,这并不能真正帮助了解它是如何工作的。所以我开始为这些选择任意值CIVector
。经过几次尝试,我发现这是:
[perspectiveFilter setValue:[CIVectorWithX:0 Y:200] forKey:@"inputTopLeft"];
[perspectiveFilter setValue:[CIVectorWithX:200 Y:200] forKey:@"inputTopRight"];
[perspectiveFilter setValue:[CIVectorWithX:0 Y:0] forKey:@"inputBottomLeft"];
[perspectiveFilter setValue:[CIVectorWithX:200 Y:0] forKey:@"inputBottomRight"];
应用于我的图像不会对其执行任何操作(我UIImageView
是 a 的子视图UIScrollView
)。所以我将值更改为 600x600,我发现除了结果图像的大小外,没有任何变化。第一种情况是 200x200,然后是 600x600。
所以这是我的问题:为什么我的图像打印为 200x200 大小的正方形,而我在 iPhone 设备上工作并且它是完美的矩形?