0

UIImageView移動/スケーリングできる があります ( ) self.imageForEditing。この画像ビューの上に、穴が切り取られたオーバーレイがあります。これは静的で移動できません。ボタンが押されたときに穴から見える下の画像の部分だけを保存する必要があります。私の現在の試み:

- (IBAction)saveImage
{

    UIImage *image = self.imageForEditing.image;

    CGImageRef originalMask = [UIImage imageNamed:@"picOverlay"].CGImage;
    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(originalMask),
                                        CGImageGetHeight(originalMask),
                                        CGImageGetBitsPerComponent(originalMask),
                                        CGImageGetBitsPerPixel(originalMask),
                                        CGImageGetBytesPerRow(originalMask),
                                        CGImageGetDataProvider(originalMask), nil, YES);

    CGImageRef maskedImageRef = CGImageCreateWithMask(image.CGImage, mask);

    UIImage *maskedImage = [UIImage imageWithCGImage:maskedImageRef scale:image.scale orientation:image.imageOrientation];

    CGImageRelease(mask);
    CGImageRelease(maskedImageRef);

    UIImageView *test = [[UIImageView alloc] initWithImage:maskedImage];
    [self.view addSubview:test];
}

テストとして、新しく作成した画像を画面の左上に追加しようとしています。理論的には、小さな丸い画像 (オーバーレイを通して見えた部分) になるはずです。しかし、私はイメージ全体を再び作成しています。私は何を間違っていますか?そして、移動できるという事実をどのように説明できますself.imageForEditingか?

4

1 に答える 1

0

CGImageCreateWithMask元の画像と同じサイズの画像を返します。そのため、マスクを適用した元の画像(私が推測する)を取得します。

マスクを適用してから、非表示の境界線を削除できます。この質問からのアドバイスを使用してください:iOS:画像を有用な部分にトリミングする方法(透明な境界線を削除する)

画像の不透明な部分の境界を見つけて、新しい画像に再描画します。

于 2013-02-26T16:20:23.317 に答える