Code Block |
---|
CGImageRef UIGetScreenImage(); |
...
...
- (UIImage *) getScreenImage:(UIView *)shotView{ |
...
...
CGImageRef cgImage = UIGetScreenImage(); |
...
...
void *imageBytes = NULL; |
...
...
if (cgImage == NULL) |
...
...
{ CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB(); |
...
...
imageBytes = malloc(shotView.bounds.size.width * shotView.bounds.size.height * 4); |
...
...
CGContextRef context = CGBitmapContextCreate(imageBytes, shotView.bounds.size.width, shotView.bounds.size.height, 8, shotView.bounds.size.width * 4, colorspace, kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Big); |
...
...
CGColorSpaceRelease(colorspace); |
...
...
for (UIWindow *window in [[UIApplication sharedApplication] windows]) |
...
CGRect bounds = [window bounds];
CALayer *layer = [window layer];
CGContextSaveGState(context);
if ([layer contentsAreFlipped]) {
...
{ CGRect bounds = [window bounds]; CALayer *layer = [window layer]; CGContextSaveGState(context); if ([layer contentsAreFlipped]) { CGContextTranslateCTM(context, 0.0f, bounds.size.height); |
...
...
CGContextScaleCTM(context, 1.0f, -1.0f); |
...
}
...
} [layer renderInContext:(CGContextRef)context]; |
...
...
CGContextRestoreGState(context); |
...
}
...
} cgImage = CGBitmapContextCreateImage(context); |
...
...
CGContextRelease(context); |
...
}
...
} UIImage *resultingImage = [UIImage imageWithCGImage:cgImage]; |
...
...
CGImageRelease(cgImage); |
...
...
return resultingImage;
} |
}