Tag: 截图

如何捕获UITableView / UIScrollView的完整内容的UIImage,并使其在iOS设备上工作

我正在使用这个非常优雅的一段代码获取一个UIScrollView的屏幕截图,包括屏幕外的部分来捕获一个UITableView的全部内容导出到一个UIImage。 UIGraphicsBeginImageContextWithOptions(self.controller.tableView.contentSize, YES, 0); { CGPoint savedContentOffset = self.controller.tableView.contentOffset; CGRect savedFrame = self.controller.tableView.frame; self.controller.tableView.contentOffset = CGPointZero; self.controller.tableView.frame = CGRectMake(0, 0, self.controller.tableView.contentSize.width, self.controller.tableView.contentSize.height); [self.controller.tableView.layer renderInContext: UIGraphicsGetCurrentContext()]; image = UIGraphicsGetImageFromCurrentImageContext(); self.controller.tableView.contentOffset = savedContentOffset; self.controller.tableView.frame = savedFrame; } UIGraphicsEndImageContext(); 它在模拟器中工作得非常好,但是,当我在iOS设备(iphone 4s)上运行此代码时,在调用此方法时,出现以下错误: [self.controller.tableView.layer renderInContext: UIGraphicsGetCurrentContext()]; 错误: Error: CGContextTranslateCTM: invalid context 0x2924b0 Error: CGContextDrawImage: invalid context 0x2924b0 Error: CGContextRestoreGState: invalid […]

捕获屏幕

我正试图捕捉(屏幕截图)一个视图。 为此,我使用下面显示的一段代码将其保存到我的文档目录中作为PNG图像。 UIGraphicsBeginImageContextWithOptions(highlightViewController.fhView.centerView.frame.size, YES, 1.0); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"1.png"]; NSData *imageData = UIImagePNGRepresentation(screenshot); [imageData writeToFile:appFile atomically:YES]; UIGraphicsEndImageContext(); 问题:我可以捕捉部分视图吗? 因为在上面的代码我不能改变原点(框架)。 如果有人有其他方法来捕捉某个特定的部分,请分享。

截图只是屏幕的一部分 – 斯威夫特

我正在使用这个Swift代码截取我的应用程序的屏幕截图: UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, false, 0); self.view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true) var image:UIImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 我如何才能截取屏幕的一部分,而不是所有的,就像我在这里做的?

iTunes Connect截图iPhone 6 / 6Plus没有状态栏?

嗨和TNX的阅读。 其他职位正在谈论iPhone 6和6 Plus的iTunes Connect iPhone 6的屏幕截图大小:高分辨率人像的750 x 1334像素高分辨率人像的1334 x 750像素高分辨率人像的iPhone 6 Plus 1242 x 2208像素2208 x 1242高分辨率的景观像素。 但是,他们必须上传没有状态栏,所以这些尺寸看起来不正确。 iTunes Connect开发者指南在包含或不包含状态栏的情况下给出了4S,5的不同build议,但对于仅提供全尺寸的iPhone 6和6Plus,则不提供。 有什么build议吗? 许多tnxs。

调用drawViewHierarchyInRect afterScreenUpdates:YES时,iOS8缩放毛刺

我正在将项目从iOS7转换为使用自定义转换的iOS8,并且在完成加载afterScreenUpdates:YES之后需要捕获模式,并且看到整个屏幕缩放一秒钟,然后缩小。 我也看到这发生在部分之间的iOS的Flickr应用程序和Yelp应用程序转换到iOS8上的照片。 UIGraphicsBeginImageContextWithOptions(self.view.frame.size, YES, 22.0); [self.view drawViewHierarchyInRect:self.view.frame afterScreenUpdates:YES]; UIGraphicsEndImageContext(); 添加更大的比例因子有助于强调更多的故障,但是我只是在示例中按下button来调用它。 编辑这似乎发生在iPhone 6和6加上不在5。 示例项目github

部分截图和图像质量的损失

我正在打印相机胶卷,电子邮件,短信,FB,Twitter等部分屏幕截图…部分屏幕select – 从顶部100像素,底部100。 我用下面的代码: let top: CGFloat = 100 let bottom: CGFloat = 100 let size = CGSize(width: view.frame.size.width, height: view.frame.size.height – top – bottom) UIGraphicsBeginImageContext(size) let context = UIGraphicsGetCurrentContext()! CGContextTranslateCTM(context, 0, -top) view.layer.renderInContext(context) let snapshot = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() UIImageWriteToSavedPhotosAlbum(snapshot, nil, nil, nil) 由此产生的截图质量差。 我研究了几个小时,发现有几个人也有类似的问题。 在我的问题上,我不能根据自己的想法修改解决scheme。 我设法find了一个半修复。 我变了: UIGraphicsBeginImageContext(size) 至 UIGraphicsBeginImageContextWithOptions(imageView.bounds.size,true,2.0) 从本质上来说,我的屏幕截图按照2.0的倍数放大 这似乎给我一个更清晰/质量更好的部分截图,虽然图像比我想要的大。 有没有另一种解决办法可以适用? 谢谢!

C4保存图像的一部分

嘿,我经历了保存图像的例子,之后我只想保存屏幕的一部分。 我设法保存从图像左上angular开始的部分,但我实际上想保存我的屏幕的中心。 仅保存图像的一部分的魔法是设置具有一定大小的graphics上下文,如下所示: UIGraphicsBeginImageContextWithOptions(CGSizeMake(300, 300), YES, 5.0f); 我认为可能有一种方法来使用CGRect而不是大小,但是这给了我一个错误。 任何其他的尝试或想法? 我是否需要通过截图的像素来抓取所需的图像,并创build一个新的图像(这可能是我能想到的那种复杂的方式,但也许有一个更简单的方法)?

从屏幕截图中排除视图

这是我如何截取我的观点的截图: UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0) view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true) let img = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() 但是,在视图中,有一个UIVisualEffectsView ,我想从屏幕截图中排除。 我试图隐藏UIVisualEffectsView之前采取的截图,并取消隐藏它,但我不希望用户看到该过程。 (如果我只是隐藏视图,他会这样做,因为iPad太慢,看起来屏幕闪烁…) 有任何想法吗? 提前致谢!

截图在iPhone上的iPhone只有一个白色的背景

一些背景:我只是试图做一个简单的程序使用Xcode 6testing版7迅速截图的iPhone后,我按下button。 这是在SpiteKit和游戏场景中完成的。 背景是一个随机的PNG图像和“你好世界”默认示例文本。 我以编程方式在gamescene didMoveToView函数中使用以下代码放置一个按下button(默认飞船图像是button): button.setScale(0.2) screen.frame = CGRect(origin: CGPointMake(self.size.width/4, self.size.height/1.5), size: button.size) screen.setImage(playAgainButton, forState: UIControlState.Normal) screen.addTarget(self, action: "action:", forControlEvents: UIControlEvents.TouchUpInside) self.view!.addSubview(screen) 这将我的按下button,在它链接到一个function的屏幕上,使用下面的代码截图: func action(sender:UIButton!){ UIGraphicsBeginImageContext(self.view!.bounds.size) self.view!.layer.renderInContext(UIGraphicsGetCurrentContext()) let screenshot = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil) } 所以这个代码是截图的,但是当我查看照片的时候,只能显示按下button,其余的图像是白色的。 图像如下所示: 下面,我认为屏幕截图应该看起来像这样,因为这是模拟器中的屏幕(我只是用一些随机的图像/文本作为背景): 有人可以向我解释为什么截图程序不是也拍摄背景图片,以及如何解决? 我在网上查找,我还没有看到任何问题是解决我的问题。 在线我看到了一些类似的问题,并尝试了他们的修复:我import了quartzCore,coreGraphics和coreImages,但没有修复。 另外,我尝试使用ViewController,并设置一个UIbutton与一个IBaction屏幕截图,但仍然得到相同的白色背景图像。 我已经尝试了不同的背景图像,结果相同。 我是相当新的编程,所以,任何帮助将不胜感激! 先谢谢你!

当AVPlayer播放m3u8stream时,如何捕捉图像?

我使用AVPlayer播放一个m3u8文件,并且我想在这些代码中捕获一个图像: AVAssetImageGenerator *gen = [[AVAssetImageGenerator alloc] initWithAsset:self.player.currentItem.asset]; gen.appliesPreferredTrackTransform = YES; NSError *error = nil; CMTime actualTime; CMTime now = self.player.currentTime; [gen setRequestedTimeToleranceAfter:kCMTimeZero]; [gen setRequestedTimeToleranceBefore:kCMTimeZero]; CGImageRef image = [gen copyCGImageAtTime:now actualTime:&actualTime error:&error]; UIImage *thumb = [[UIImage alloc] initWithCGImage:image]; NSLog(@"%f , %f",CMTimeGetSeconds(now),CMTimeGetSeconds(actualTime)); NSLog(@"%@",error); if (image) { CFRelease(image); } 但它不起作用。 而错误是: Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not […]