iPhone完整截屏

完整截屏

http://www.devdiv.com/thread-28736-1-1.html

 

CGImageRef UIGetScreenImage();

void SaveScreenImage(NSString *path)

{

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    CGImageRef cgImage = UIGetScreenImage();

        void *imageBytes = NULL;

        if (cgImage == NULL) {

                CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();

                imageBytes = malloc(320 * 480 * 4);

                CGContextRef context = CGBitmapContextCreate(imageBytes, 320, 480, 8, 320 * 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]) {

                                CGContextTranslateCTM(context, 0.0f, bounds.size.height);

                                CGContextScaleCTM(context, 1.0f, -1.0f);

                        }

                        [layer renderInContext:(CGContextRef)context];

                        CGContextRestoreGState(context);

                }

                cgImage = CGBitmapContextCreateImage(context);

                CGContextRelease(context);

        }

    NSData *pngData = UIImagePNGRepresentation([UIImage imageWithCGImage:cgImage]);

    CGImageRelease(cgImage);

        if (imageBytes)

                free(imageBytes);

    [pngData writeToFile:path atomically:YES];

    [pool release];

}

 

你可能感兴趣的:(iphone开发)