如何以编程方式将多个UIImage组合成一个长UIImage?

时间:2014-08-12 20:24:29

标签: ios

我正在使用此处的代码How can I programmatically put together some UIImages to have one big UIImage?将多个屏幕截图组合成一个大的垂直图像。但是,我无法调用此函数将多个图像组合在一起使用:

imageContainer = [UIImage imageByCombiningImage:imageContainer withImage:viewImage];

如何调用此UIImage + combine类别将图像库合并在一起?

这是我的代码:

- (void) printScreen {
   // this is a method that starts the screenshot taking process

   // this line is necessary to capture the completion of the scrollView animation
   _webView.scrollView.delegate = self;

   // save the first image
   UIGraphicsBeginImageContextWithOptions(_webView.bounds.size, NO, 0);
   [_webView.layer renderInContext:UIGraphicsGetCurrentContext()];
   UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();

   UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);

   // scroll to the next section
   [_webView.scrollView scrollRectToVisible:CGRectMake(0, _webView.frame.size.height, _webView.frame.size.width, _webView.frame.size.height) animated:YES];

}


- (void )scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
   // at this point the _webView scrolled to the next section

   // I save the offset to make the code a little easier to read
   CGFloat offset = _webView.scrollView.contentOffset.y;

   UIGraphicsBeginImageContextWithOptions(_webView.bounds.size, NO, 0);
   // note that the below line will not work if you replace _webView.layer with _webView.scrollView.layer
   [_webView.layer renderInContext:UIGraphicsGetCurrentContext()];
   UIImage *image1 = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();

   UIImageWriteToSavedPhotosAlbum(image1, nil, nil, nil);

   // if we are not done yet, scroll to next section
   if (offset < _webView.scrollView.contentSize.height) {
    [_webView.scrollView scrollRectToVisible:CGRectMake(0, _webView.frame.size.height+offset, _webView.frame.size.width, _webView.frame.size.height) animated:YES];
   }

    UIImage *image = [UIImage imageByCombiningImage:image1 withImage:image2];
    [[self theNewImageView] setImage:image];
    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
    NSLog(@"%@ printScreen Image", image);
    NSLog(@"%@ printScreen Image2", image2);

   }

修改

此时我尝试了很多不同的事情。我是客观C开发的新手,所以我一直在深入研究Apple开发人员文档以及其他有关stack和lynda等信息的好地方。 我从日志中看到两个不同的代码:printScreen Image2,printScreen Image,但我无法获得调用新类别的功能。

我能够将所有图像分别写入相册,我可以将image1或image2合并为一个图像,但不能合并两个图像或所有图像。

1 个答案:

答案 0 :(得分:0)

我明白了!一直在我面前。我需要将调用添加到scrollViewDidEndScrollingAnimation中的类别,然后保存到UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);。我可能尝试了这个解决方案的几个不同版本,但我在早期重新命名了一些变量以与我的项目保持一致,从而搞砸了所有内容。