1

私は現在取り組んでいCIPerspectiveTransformますが、正確な動作を見つけることができないようです。少なくとも私はアイデアを持っていますが、それについてはよくわかりません。ここでわかったことを公開します。

Core Image Filter Referenceでわかるように、type には 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。

ここに私の質問があります: iPhone デバイスで作業していて、完全に長方形であるのに、なぜ私の画像は正方形の 200x200 サイズで印刷されるのでしょうか?

4

1 に答える 1

1

これらCIVectorsは、透視変換後の画像コーナーの望ましい位置を表します。CGPointsこれらのベクトルには 2 つの次元 (X、Y) しかないため、新しい画像のコーナーであるかのように考えることができます。

あなたの例では、次を指定する必要があります。

[perspectiveFilter setValue:[CIVectorWithX:50 Y:200] forKey:@"inputTopLeft"];
[perspectiveFilter setValue:[CIVectorWithX:150 Y:200] forKey:@"inputTopRight"];

スターウォーズのオープニングクロールに似た視点を取得します。

于 2014-08-04T21:06:54.247 に答える