我正在使用此处的代码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合并为一个图像,但不能合并两个图像或所有图像。
答案 0 :(得分:0)
我明白了!一直在我面前。我需要将调用添加到scrollViewDidEndScrollingAnimation
中的类别,然后保存到UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
。我可能尝试了这个解决方案的几个不同版本,但我在早期重新命名了一些变量以与我的项目保持一致,从而搞砸了所有内容。