bean
(NbeanN)
1
**直接上源码!
UIView * screenView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO];
UIGraphicsBeginImageContextWithOptions(screenView.frame.size, YES, [[UIScreen mainScreen] scale]);
[screenView drawViewHierarchyInRect:screenView.bounds afterScreenUpdates:YES];
UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
1.保存到相册
UIImageWriteToSavedPhotosAlbum(screenImage, nil, nil, nil);
2.保存到任意路径
NSString *pathDocuments = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; //沙盒目录,可以自己修改
NSString*filePath=[pathDocuments stringByAppendingPathComponent:@“contact.png”];
NSData * creenData =UIImagePNGRepresentation(screenImage);
NSFileManager * fileManager=[NSFileManager defaultManager];
[fileManager createFileAtPath:filePath contents:creenData attributes:nil];
搞了我一天半,总算出来了,记录一下分享一下!!
3 个赞
bean
(NbeanN)
4
狗神回复,好激动!用这个方法就可以的,就是截屏的,可以截取全屏,也可以截取某个区域;系统提供的方法!
可以很详细,考虑纳入干货区,置顶贴。如果能写写整个获取这些API的思路与过程会更好
bean
(NbeanN)
6
嗯嗯,感谢推荐,也是误打误撞弄出来的,论坛里有一些帖子给了一些启示,那就简单写一下心路历程吧。
bean
(NbeanN)
7
找这个功能找了很久,在论坛里看了很多篇帖子,但是自己用都不是很好用,也有很多朋友遇到各种问题,首先是看到了这篇帖子。
然后看到狗神的回复到了这篇帖子
然后用了第四种方法并把图片存到相册里,然后发现存到相册里面的是全白或者是全黑的。
我想着就放弃了,然后就想去砸壳相册做一个监听,砸壳过程中遇到了一些坑,填完一个又来一个就放弃了返回去又去看那个代码。
然后就正向开发了一下,使用
UIView * view = [UIScreen mainScreen] snapshotViewAfterScreenUpdates:YES];
查看了一下这个view是不是有东西,果不其然是有东西的,然后就判断是渲染出了问题,在渲染上下文处view.layer有问题,这是我的推断,后来我就去找绕过这个东西的方法。
运气还算好,找到一些原因,发现方法在一些系统上面有bug或者被废弃了,然后误打误撞碰到了
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];
然后就抱着试一试的心态测试了一下,然后居然成功了!!!!
然后后面就水到渠成了,将view转成img,然后img转成二进制进行重命名,都迎刃而解了。
这个坑从年前卡住了,然后到了近期才有头绪,也算功德圆满!!
bean
(NbeanN)
10
[screenView drawViewHierarchyInRect:screenView.bounds afterScreenUpdates:YES];
这句话对内存消耗比较大,还需要持续修改,如有大神知道,求指导,谢谢!
请问把代码复制过去 为什么报 C++ requires a type specifier for all declarations 刚接触逆向 新手不懂 求楼主大大解答
请问把代码复制过去 为什么报 C++ requires a type specifier for all declarations 刚接触逆向 新手不懂 求楼主大大解答
viktor
(viktor)
17
会正向的都会。只不过我自己写了一些方法,直接从内存读取图片,通过python调用osx系统程序直接显示出来。