-(Nsstring ) grabScreenShots:(NSDictionary )argsDic {
Nsstring *fileN = @""; Nsstring* fileName = [argsDic objectForKey:@"fileName"]; float sysversion = [[[UIDevice currentDevice] systemVersion] floatValue]; if (sysversion < 7.0) { CGFloat scale = [[UIScreen mainScreen] scale]; int w = self.view.bounds.size.width*scale; int h = self.view.bounds.size.height*scale; NSInteger myDataLength = w * h * 4; // allocate array and read pixels into it. glubyte *buffer = (glubyte *) malloc(myDataLength); glreadPixels(0,w,h,GL_RGBA,GL_UNSIGNED_BYTE,buffer); // gl renders "upside down" so swap top to bottom into new array. // there's gotta be a better way,but this works. glubyte *buffer2 = (glubyte *) malloc(myDataLength); for(int y = 0; y < h; y++) { for(int x = 0; x <w * 4; x++) { buffer2[(h -1 - y) * w * 4 + x] = buffer[y * 4 * w + x]; } } // make data provider with data. CGDataProviderRef provider = CGDataProviderCreateWithData(NULL,buffer2,myDataLength,NULL); // prep the ingredients int bitsPerComponent = 8; int bitsPerPixel = 32; int bytesPerRow = 4 * w; CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault; CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefault; // make the cgimage CGImageRef imageRef = CGImageCreate(w,bitsPerComponent,bitsPerPixel,bytesPerRow,colorSpaceRef,bitmapInfo,provider,NULL,NO,renderingIntent); // then make the uiimage from that UIImage *myImage = [UIImage imageWithCGImage:imageRef]; NSData * data = UIImagePNGRepresentation(myImage); NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); fileN = [[path objectAtIndex:0] stringByAppendingPathComponent:fileName]; NSLog(@"filename is %@",fileN); [data writetoFile:fileN atomically:YES]; CGImageRelease(imageRef); CGDataProviderRelease(provider); CGColorSpaceRelease(colorSpaceRef); free(buffer); } else { CGSize size = self.view.bounds.size; UIGraphicsBeginImageContextWithOptions(size,[UIScreen mainScreen].scale); CGRect rec = CGRectMake(self.view.frame.origin.x,self.view.frame.origin.y,self.view.bounds.size.width,self.view.bounds.size.height); [self.view drawViewHierarchyInRect:rec afterScreenUpdates:NO]; UIImage *image = UIGraphicsGetimageFromCurrentimageContext(); UIGraphicsEndImageContext(); NSData * data = UIImagePNGRepresentation(image); NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,fileN); [data writetoFile:fileN atomically:YES];
// UIImageWritetoSavedPhotosAlbum(image,nil,nil);
}
return fileN;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。