0

フレームとフレームの後ろの写真のUIView2つが含まれています。UIImageViewsフレームは長方形ではなく、不規則な形です。ユーザーはフレームの後ろの画像を操作(ズーム、回転、パン)できます。操作が完了したら、画像とフレームを一緒にではなく、フレーム内の画像の切り抜きをキャプチャします。これを行う方法はありますか?

以下のように、画像とフレームを一緒に1つの画像に平坦化することができましたが、正常に抽出された場合にフレームの形の境界線を持つ画像のみが必要です。

- (IBAction)renderPhoto:(id)sender {
    //Combine the layers into a single image
    UIView *canvas = [[[sender superview] subviews] objectAtIndex:0];
    UIGraphicsBeginImageContext(canvas.bounds.size);
    [canvas.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *combinedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
}
4

2 に答える 2

2

私のこの方法を使用してください。

- (UIImage*)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect
{

    UIGraphicsBeginImageContext(photo.frame.size);/// use your screen or photo frame
    [photo.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();



    CGImageRef imageRef = CGImageCreateWithImageInRect([screenshot CGImage], rect);
    UIImage *cropped = [UIImage imageWithCGImage:imageRef];

    /*    no origin .....
    UIGraphicsBeginImageContext(tempview.frame.size);
    [[self.photo layer] renderInContext:UIGraphicsGetCurrentContext()];   
    cropped= UIGraphicsGetImageFromCurrentImageContext();    
    UIGraphicsEndImageContext(); 
    */
        return cropped;
}

願っています、これはあなたを助けます.... :)

于 2012-05-09T14:04:11.873 に答える
0

フレームからマスクを作成し、このマスクをターゲットイメージに適用して、フレームをターゲットイメージから本質的に切り取ることができます。または、最終的な画像をどのように使用するかによっては、描画を実行するときにフレームを使用してコンテキストをクリップする方が簡単な場合があります。

このトピックはすべてをカバーしています:https ://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_images/dq_images.html#//apple_ref/doc/uid/TP30001066-CH212-TPXREF101

2番目のオプション(コンテキストのクリップ)は、[コンテキストのクリップによる画像のマスク]の下にあります。

于 2012-05-09T14:16:37.283 に答える