大家都知道通过同时按iphone和ipad关机键和home键可以进行截图,也可以通过代码编程进行对屏幕的截图。
使用opengles截图并保存代码:
- -(UIImage
*) glToUIImage { -
NSInteger myDataLength = 1024 * 768 * 4; -
-
// allocate array and read pixels into it. -
GLubyte *buffer = (GLubyte *) malloc(myDataLength); -
glReadPixels(0, 0, 1024, 768, 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 <768; y++) -
{ -
for(int x = 0; x <1024 * 4; x++) -
{ -
buffer2[(767 - y) * 1024 * 4 + x] = buffer[y * 4 * 1024 + x]; -
} -
} -
-
// make data provider with data. -
CGDataProviderRef provider = CGDataProviderCreateWith Data(NULL, buffer2, myDataLength, NULL); -
-
// prep the ingredients -
int bitsPerComponent = 8; -
int bitsPerPixel = 32; -
int bytesPerRow = 4 * 1024; -
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDevice RGB(); -
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefaul t; -
CGColorRenderingIntent renderingIntent = kCGRenderingIntentDefaul t; -
-
// make the cgimage -
CGImageRef imageRef = CGImageCreate(1024, 768, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent); -
-
// then make the uiimage from that -
UIImage *myImage = [UIImage imageWithCGImage:imageRef]; -
return myImage; - }
-
- -(void)captureToPhotoAlbum
{ -
UIImage *image = [self glToUIImage]; -
UIImageWriteToSavedPhoto sAlbum(image, self, nil, nil); - }
-
使用苹果官网截图并保存
- -(void)ScreenShots
- {
-
[self unschedule:@selector(ScreenShots)]; -
-
CGSize imageSize = [[UIScreen mainScreen] bounds].size; -
if (NULL != UIGraphicsBeginImageCont extWithOptions) { -
UIGraphicsBeginImageCont extWithOptions(imageSize, NO, 0); -
} -
else -
{ -
UIGraphicsBeginImageCont ext(imageSize); -
} -
-
CGContextRef context = UIGraphicsGetCurrentCont ext(); -
-
for (UIWindow * window in [[UIApplication sharedApplication] windows]) { -
if (![window respondsToSelector:@selector(screen)] || [window screen] == [UIScreen mainScreen]) { -
CGContextSaveGState(context); -
CGContextTranslateCTM(context, [window center].x, [window center].y); -
CGContextConcatCTM(context, [window transform]); -
CGContextTranslateCTM(context, -[window bounds].size.width*[[window layer] anchorPoint].x, -[window bounds].size.height*[[window layer] anchorPoint].y); -
[[window layer] renderInContext:context]; -
-
CGContextRestoreGState(context); -
} -
} -
-
UIImage *image = UIGraphicsGetImageFromCu rrentImageContext(); -
-
UIGraphicsEndImageContex t(); -
NSThread *thread=[[NSThread alloc] initWithTarget:self selector:@selector(saveThread:) object:image]; -
[thread start]; -
[thread release]; -
-
NSLog(@"Suceeded!"); - }
-
- -(void)saveThread:(UIImage*)image
- {
-
NSAutoreleasePool *pool=[[NSAutoreleasePool alloc]init]; -
UIImageWriteToSavedPhoto sAlbum(image, self, nil, nil); -
[pool release]; - }
-