合并并保存两个UIImageViews

时间:2011-04-08 16:11:48

标签: objective-c cocoa-touch ios uiimageview

我的项目有两个UIImages,一个名为imageView,另一个名为Birdie

- (UIImage *)addImage:(UIImage *)imageView toImage:(UIImage *)Birdie {
    UIGraphicsBeginImageContext(imageView.size);

    // Draw image1
    [imageView drawInRect:CGRectMake(0, 0, imageView.size.width, imageView.size.height)];

    // Draw image2
    [Birdie drawInRect:CGRectMake(0, 0, Birdie.size.width, Birdie.size.height)];

    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return resultingImage;
}

-(void)captureScreen{
    UIImageWriteToSavedPhotosAlbum(resultingImage, nil, nil, nil);
}

这是我的代码,captureScreen按钮用于保存图像。它不起作用,因为resultingImage未声明,但我对Xcode很新,所以我不知道如何解决这个问题。

非常感谢提前!

2 个答案:

答案 0 :(得分:1)

你可以这样做。

将此-(void)captureScreen:方法重写为-(void)captureScreen:(UIImage*)imageToSave

然后在您的按钮操作中

- (IBAction)myButton:(id)sender{ [self captureScreen:[self addImage:imageViewImage toImage:BirdieImage]] }

答案 1 :(得分:0)

  `resultingImage` 

不是全局变量,其范围仅限于- (UIImage *)addImage:(UIImage *)imageView toImage:(UIImage *)Birdie方法,您必须调用此方法并使用此方法返回的对象。

-(void)captureScreen{
     UIImage *resultingImage = [self addImage:yourFirstImage toImage:yourSecondImage];
    UIImageWriteToSavedPhotosAlbum(resultingImage, nil, nil, nil);
}

添 有一点你应该记住,我们不能直接调用'drawRect'方法。 它将由系统调用。 所以在这里你应该使用其他可用于UIImage的方法。 你可以使用'imageNamed:'方法......