将一页 UIScrollView 保存到图像

Posted

技术标签:

【中文标题】将一页 UIScrollView 保存到图像【英文标题】:Save one page of UIScrollView to image 【发布时间】:2012-10-08 09:26:38 【问题描述】:

我有一个UIWebView。将数据加载到 UIWebView 后,我的 UIWebView 可以水平滚动,并且我在 web 视图中为我的 scrollView 启用分页。

我的问题是:

有什么方法可以将 UIWebView 中 scrollView 中的页面保存为图像?我的意思是,我会为 5 页滚动视图(内容大小 = 5 页)获得 5 张图片

【问题讨论】:

如果您有滚动视图或 webview 等应用程序,但如果您想使用图像对象捕获和保存当前屏幕,请使用下面的代码... 如果 web view 中的 UIScrollView 的内容尺寸大于 web view 中 uiscrollview 的 frame,则图片不完整 【参考方案1】:

你可以像这样保存你的屏幕:-

 -(IBAction)savebutn:(id)sender
 
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *saveImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();
NSData *imageData = UIImagePNGRepresentation(saveImage);
NSFileManager *fileMan = [NSFileManager defaultManager];

NSString *fileName = [NSString stringWithFormat:@"%d.png",imagename];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];
[fileMan createFileAtPath:pdfFileName contents:imageData attributes:nil];


 

您的图片将保存在您的文档目录中,扩展名为 .png

【讨论】:

【参考方案2】:

此代码在用户想要捕获当前视图 ScreenShot 并共享或保存此图像时很有用....

- (UIImage *)captureView 

//hide controls if needed
CGRect rect = [self.view bounds];

    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [self.view.layer renderInContext:context];   
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;


查看我的博客,...http://parasjoshi3.blogspot.in/2012/06/captureimagescreenshot-of-view.html

:)

【讨论】:

这个示例代码会将当前视图保存到图像,我已经尝试过了,但是,我的 UIWebView 的内容大小大于屏幕大小,所以我保存的图像有 UIWebView 的空内容 不,我使用 [self.view bounds];我的视图有一个标签栏和一个 uiwebview。而且我的 uiwebview 的内容大小大于屏幕大小,当我使用上面的代码时,输​​出图像仅包含标签栏... 试试这条线 CGRect rect = [yourScrollView bounds];插入这一行 CGRect rect = [self.view bounds];用我的代码...【参考方案3】:
CGRect rect = [webview bounds];
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[webview.layer renderInContext:context];   
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

这有助于捕捉当前图像

【讨论】:

以上是关于将一页 UIScrollView 保存到图像的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像保存到 localStorage 并在下一页显示?

UIScrollView 和 UIImage 在其中启用了分页

如何裁剪 UIScrollView 中显示的 UIImageView 部分并将其保存到 UIImage 变量?

如何将一页上的 id 调用到另一页

保存并加载用户缩放到的内容 uiscrollview ios

带有动态文本和图像的 UIScrollView