作者:zhibiao | 来源:互联网 | 2023-09-08 18:34
大家都知道通过同时按iphone和ipad关机键和home键可以进行截图,也可以通过代码编程进行对屏幕的截图。
使用opengles截图并保存代码:
相关连接
-(UIImage *) glToUIImage {NSInteger myDataLength &#61; 1024 * 768 * 4;// allocate array and read pixels into it.GLubyte *buffer &#61; (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&#39;s gotta be a better way, but this works.GLubyte *buffer2 &#61; (GLubyte *) malloc(myDataLength);for(int y &#61; 0; y <768; y&#43;&#43;){for(int x &#61; 0; x <1024 * 4; x&#43;&#43;){buffer2[(767 - y) * 1024 * 4 &#43; x] &#61; buffer[y * 4 * 1024 &#43; x];}}// make data provider with data.CGDataProviderRef provider &#61; CGDataProviderCreateWithData(NULL, buffer2, myDataLength, NULL);// prep the ingredientsint bitsPerComponent &#61; 8;int bitsPerPixel &#61; 32;int bytesPerRow &#61; 4 * 1024;CGColorSpaceRef colorSpaceRef &#61; CGColorSpaceCreateDeviceRGB();CGBitmapInfo bitmapInfo &#61; kCGBitmapByteOrderDefault;CGColorRenderingIntent renderingIntent &#61; kCGRenderingIntentDefault;// make the cgimageCGImageRef imageRef &#61; CGImageCreate(1024, 768, bitsPerComponent, bitsPerPixel, bytesPerRow, colorSpaceRef, bitmapInfo, provider, NULL, NO, renderingIntent);// then make the uiimage from thatUIImage *myImage &#61; [UIImage imageWithCGImage:imageRef];return myImage;
}-(void)captureToPhotoAlbum {UIImage *image &#61; [self glToUIImage];UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);
}
使用苹果官网截图并保存
相关连接
-(void)ScreenShots
{[self unschedule:&#64;selector(ScreenShots)];CGSize imageSize &#61; [[UIScreen mainScreen] bounds].size;if (NULL !&#61; UIGraphicsBeginImageContextWithOptions) {UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0);}else{UIGraphicsBeginImageContext(imageSize);}CGContextRef context &#61; UIGraphicsGetCurrentContext();for (UIWindow * window in [[UIApplication sharedApplication] windows]) {if (![window respondsToSelector:&#64;selector(screen)] || [window screen] &#61;&#61; [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 &#61; UIGraphicsGetImageFromCurrentImageContext();UIGraphicsEndImageContext();NSThread *thread&#61;[[NSThread alloc] initWithTarget:self selector:&#64;selector(saveThread:) object:image];[thread start];[thread release];NSLog(&#64;"Suceeded!");
}-(void)saveThread:(UIImage*)image
{NSAutoreleasePool *pool&#61;[[NSAutoreleasePool alloc]init];UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);[pool release];
}