Có thể trong mục tiêu C mà chúng ta có thể chụp màn hình của màn hình và lưu trữ hình ảnh này trong UIImage.cách chụp ảnh màn hình của iPhone theo cách lập trình?
Trả lời
Bạn cần phải tạo ra một bối cảnh bitmap kích thước của màn hình của bạn và sử dụng
[self.view.layer renderInContext:c]
để sao chép tầm nhìn của bạn trong đó. Khi việc này hoàn tất, bạn có thể sử dụng
CGBitmapContextCreateImage(c)
để tạo CGImage từ ngữ cảnh của bạn.
Lập:
CGSize screenSize = [[UIScreen mainScreen] applicationFrame].size;
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB();
CGContextRef ctx = CGBitmapContextCreate(nil, screenSize.width, screenSize.height, 8, 4*(int)screenSize.width, colorSpaceRef, kCGImageAlphaPremultipliedLast);
CGContextTranslateCTM(ctx, 0.0, screenSize.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
[(CALayer*)self.view.layer renderInContext:ctx];
CGImageRef cgImage = CGBitmapContextCreateImage(ctx);
UIImage *image = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
CGContextRelease(ctx);
[UIImageJPEGRepresentation(image, 1.0) writeToFile:@"screen.jpg" atomically:NO];
Lưu ý rằng nếu bạn chạy mã của bạn để đáp ứng với một nhấp chuột vào một UIButton, hình ảnh của bạn sẽ cho thấy nút nhấn.
Vâng, đây là một liên kết đến với Diễn đàn Nhà phát triển của Apple https://devforums.apple.com/message/149553
Mã trước giả định rằng chế độ xem được ghi lại trên màn hình chính ... có thể không.
Công việc này có luôn luôn ghi lại nội dung của cửa sổ chính không? (Cảnh báo: biên soạn trong StackOverflow)
- (UIImage *) captureScreen {
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
CGRect rect = [keyWindow bounds];
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[keyWindow.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
kỹ thuật Q & Một QA1703 Screen Capture trong Applications UIKit
http://developer.apple.com/iphone/library/qa/qa2010/qa1703.html
Cảm ơn. + 1 cho tài nguyên táo. –
thử này ...
- (UIImage*)captureView:(UIView *)view
{
CGRect rect = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[view.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
- (void)saveScreenshotToPhotosAlbum:(UIView *)view
{
UIImageWriteToSavedPhotosAlbum([self captureView:self.view], nil, nil,nil);
}
Sử dụng mã này để chụp ảnh màn hình:
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
UIGraphicsBeginImageContext(self.webView.bounds.size);
[self.webView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenshotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(screenshotImage, nil, nil, nil);
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *str1=[NSString stringWithFormat:@"%d",myInt];
NSString *pngFilePath = [NSString stringWithFormat:@"%@/page_%@.png",docDir,str1]; // any name u want for image
NSLog(@"%@",pngFilePath);
NSData *data1 = [NSData dataWithData:UIImagePNGRepresentation(screenshotImage)];
[data1 writeToFile:pngFilePath atomically:YES];
}
UIGraphicsBeginImageContext(self.window.bounds.size);
[self.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * data = UIImagePNGRepresentation(image);
[data writeToFile:@"foo.png" atomically:YES];
CẬP NHẬT tháng 4 năm 2011: để hiển thị võng mạc, thay đổi dòng đầu tiên vào này:
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
{
UIGraphicsBeginImageContextWithOptions(self.window.bounds.size, NO, [UIScreen mainScreen].scale);
}
else
{
UIGraphicsBeginImageContext(self.window.bounds.size);
}
- (void)SnapShot {
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
} else {
UIGraphicsBeginImageContext(self.view.bounds.size);
}
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *data = UIImagePNGRepresentation(image);
[data writeToFile:@"snapshot.png" options:NSDataWritingWithoutOverwriting error:Nil];
[data writeToFile:@"snapshot.png" atomically:YES];
UIImageWriteToSavedPhotosAlbum([UIImage imageWithData:data], nil, nil, nil);
}
Đó là 100% làm việc trong chương trình của tôi, tại sao bỏ phiếu xuống.?! –
// 100% làm việc
- (UIImage *)screenshot
{
UIGraphicsBeginImageContextWithOptions(self.main_uiview.bounds.size, NO, 2.0f);
[self.main_uiview drawViewHierarchyInRect:_main_uiview.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
Câu trả lời của @dhaya đang làm việc cho tôi, nhưng đừng quên cập nhật cài đặt "Info.plist" để lưu hình ảnh trên thư viện. Mã này cần phải được thêm vào tệp "Info.plist" để lưu hình ảnh chụp trên ảnh libraray.
<key>NSPhotoLibraryAddUsageDescription</key>
<string>NeedLibrary access for save Images on Album</string>
- 1. Chụp ảnh màn hình trang web theo chương trình
- 2. Android chụp màn hình theo chương trình
- 3. Làm cách nào để lập trình chụp ảnh màn hình của ứng dụng trong Linux?
- 4. Chụp ảnh màn hình có lập trình trong OSX
- 5. Ảnh chụp màn hình Ứng dụng cho trình giả lập iPhone
- 6. Làm cách nào để chụp ảnh màn hình lập trình trong iOS?
- 7. Cách tạo ảnh chụp màn hình của QWidget?
- 8. Ảnh chụp màn hình Webdriver
- 9. iOS Ảnh chụp màn hình một phần của màn hình
- 10. Làm cách nào để chụp ảnh màn hình theo chương trình?
- 11. cách chụp ảnh màn hình lập trình và lưu nó trên thư viện?
- 12. Cách lập trình chụp ảnh webcam
- 13. Làm cách nào để chụp ảnh màn hình của iPhone/iPad bằng Xamarin.iOS (C#)?
- 14. Cách chụp một phần của màn hình
- 15. Chụp ảnh màn hình của Android OpenGL
- 16. Ảnh chụp màn hình mua hàng trong ứng dụng iPhone
- 17. Cách lấy ảnh chụp màn hình của màn hình nền từ bộ đệm sau bằng DirectX
- 18. Lập trình có ảnh chụp màn hình của khu vực cụ thể
- 19. Chụp màn hình android và tạo video theo chương trình
- 20. Bật màn hình theo cách lập trình trong android
- 21. iPhone: chụp ảnh bằng camera trước có lập trình
- 22. Ảnh chụp màn hình từ dịch vụ nền của một ứng dụng khác (theo chương trình)
- 23. Chụp ảnh màn hình theo chương trình không nắm bắt được nội dung của surfaceVIew
- 24. Video chụp màn hình trong iOS theo chương trình
- 25. Làm cách nào để chụp ảnh màn hình/hình ảnh của trang web bằng Python?
- 26. Đặt hình nền nút của iPhone theo lập trình
- 27. Cách kiểm soát chất lượng ảnh chụp màn hình selen
- 28. Cách chụp ảnh màn hình bằng HTML-Unit?
- 29. Làm cách nào để chụp "ảnh chụp màn hình" của NSView?
- 30. Chụp ảnh màn hình của video được nhúng bằng C#
thể trùng lặp http://stackoverflow.com/questions/2214957/how-do-i-take-a-screen-shot-of-a-uiview –
thể trùng lặp của [Làm thế nào để có một ảnh chụp màn hình lập trình ] (http://stackoverflow.com/questions/2200736/how-to-take-a-screenshot-programmatically) –