5

画像のマスキングに問題があります。私はゲーム「パズル」をしていて、カスタム イメージを作成する必要があります。カスタムトリミングの2つの方法を見つけて試しました:

  1. プロパティを使用しCALayer.maskます。
  2. プロパティを使用しUIImage.maskます。

最初のオプションでは、カスタム パスを作成し、それをCAShapeLayer.pathプロパティに割り当ててCAShapeLayerから、プロパティに割り当てCALayer.maskます。最後に、カスタムトリミングされた画像があります。2番目のオプションでは、最初にCGImageMaskCreate()メソッドを使用し(以前に作成したパズルのブラックマスク画像を使用します)、次にCGContextClipToMask(). どちらのオプションでも、パフォーマンスに問題があります (ほとんどの場合、画像を 16 のパズルにトリミングして画面上にドラッグする場合)。

カスタムの方法で画像をトリミングする他の方法はありますか。(パフォーマンスの問題を解決する方法がわかりません)。前もって感謝します。

4

3 に答える 3

6

これに使用できる UIImage カテゴリがたくさんあります。ちょっと待ってください。ここにいくつかのリンクを投稿します。

于 2011-05-04T08:27:41.377 に答える
0

おそらく、アルファ背景を使用して新しい画像に画像を描画し、現在の背景を上書きすることを検討する必要があります。つまり、ジグソー ピースの内側にあるすべてのピクセル: 通常の色、ジグソー ピースの外側のすべてのピクセル = 透明。そして、それを新しい背景にブレンドするか、上書きしてみてください。

ちょうど私の2セント。:)

于 2012-03-12T21:18:10.167 に答える
0

これを試して:

-(UIImage *)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect
{
    CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);

    UIImage *cropped = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);

    return cropped;
}

...

UIImage *temp_image = [self imageByCropping:original_image toRect:clipping_rectangle];
于 2011-05-04T16:09:08.897 に答える