从多个UIImageViews构建图像

时间:2013-06-15 11:28:21

标签: iphone ios

我有兴趣为iPhone和iPad构建拼贴风格的应用程序。我一直在寻找其他应用程序,并试图找出他们用来创建最终图像的方法。

我猜这个应用程序有一个UIView,然后每个单独的图像是一个UIImageView,并且是主要UIView的子视图。然后,用户可以移动每个UIImageView并按照他们的意图定位它们。

现在我的问题是,在用户将所有UIImageViews放置在屏幕上之后,您如何从屏幕上的内容创建最终图像。这当然考虑到你将升级图像以创建一个A4大小的最终打印。

任何人都可以分享一些信息吗?

由于

2 个答案:

答案 0 :(得分:1)

您应该查看 CGContext Reference 。您可以执行以下操作,将imageView 1和2组合到imageView 3。

示例代码:

UIGraphicsBeginImageContext(imageView1.image.size);  
CGRect rect = CGRectMake(0, 0, imageView1.image.size.width, imageView1.image.size.height);
[imageView1.image drawInRect:rect];  
[imageView2.image drawInRect:rect blendMode:kCGBlendModeScreen alpha:0.5];  
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();  
UIGraphicsEndImageContext();  
[imageView3 setImage:resultingImage];

GoodLuck !!!

答案 1 :(得分:1)

如果使用UIView包含更多2个要合并的图像,则可以尝试将视图捕获为要使用的图像。


    //Capture View to Image
    -(UIImage *)captureImageFromView
    {
        UIView *theView = self; //self extends UIView
        if( NULL != UIGraphicsBeginImageContextWithOptions )
        {
            UIGraphicsBeginImageContextWithOptions(theView.bounds.size, NO, 2.0f);
        }
        else
        {
            //iOS 4.0
            UIGraphicsBeginImageContext(theView.frame.size);
        }
        [theView.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *captureImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return captureImage;
    }

    //Merge 2 Images to be an Image.
    -(UIImage *)mergeBaseImage:(UIImage *)_baseImage
                    underImage:(UIImage *)_underImage
            matchBaseImageSize:(BOOL)_matchBaseImageSize
    {
        UIGraphicsBeginImageContext(_baseImage.size);
        [_baseImage drawInRect:CGRectMake(0, 0, _baseImage.size.width, _baseImage.size.height)];
        if( _matchBaseImageSize )
        {
            [_underImage drawInRect:CGRectMake(0, 0, _baseImage.size.width, _baseImage.size.height)];
        }
        else
        {
            [_underImage drawInRect:CGRectMake(0, 0, _underImage.size.width, _underImage.size.height)];
        }
        UIImage *_mergedImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return _mergedImage;
    }

希望它可以帮到你。