简体   繁体   English

如何在iPhone中自动捕获图像?

[英]How to capture the image automatically in iPhone?

I'm new to iPhone development, I have used UIImagePickerController to capture the image manually, but i want to capture the image automatically, Is it possible to do that. 我是iPhone开发的新手,我曾使用UIImagePickerController手动捕获图像,但是我想自动捕获图像,是否有可能做到这一点。 please help me. 请帮我。

Thanks in advance 提前致谢

Try This. 尝试这个。 In this I have saved the screen shot in photos album 在此,我将屏幕快照保存在相册中

-(void)screenShotCapture
{

    //-- Screen Capture --------------------------------------------------------------------//

    UIImage *image = nil;

    UIGraphicsBeginImageContext(loginBgImgVw.frame.size);

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"MM-dd-yyyy hh:mm:ss"];
    [formatter setTimeZone:[NSTimeZone localTimeZone]];

    NSString *dateToday = [formatter stringFromDate:[NSDate date]];

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(375, 0, 600, 44)];
    [label setText:dateToday];
    NSString *fileNameStr = [NSString stringWithFormat:@"%@_Login_%@",providerIdStr,dateToday];

    [label setText:fileNameStr];
    label.backgroundColor = [UIColor clearColor];
    [loginBgImgVw addSubview:label];
    [formatter release];

    loginBgImgVw.frame = CGRectMake(10, 0, 1006, 669);

    [loginBgImgVw.layer renderInContext: UIGraphicsGetCurrentContext()];     
    image = UIGraphicsGetImageFromCurrentImageContext();        
    UIGraphicsEndImageContext();        
    [label removeFromSuperview];

    //=--

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *docspath = [paths objectAtIndex:0];
    NSLog(@"path=--%@",paths);

    NSString *dataPath = [docspath stringByAppendingPathComponent:[NSString stringWithFormat:@"ProviderID_%@",providerIdStr]];
    if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
    {
        [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:nil];
    }

    NSString *savedImagePath = [dataPath stringByAppendingPathComponent:@"Login_Provider.png"];
    NSData *imageData = UIImageJPEGRepresentation(image, 0.2);

    if ([screenCapturNameAry count] != 0)
    {
        if ([screenCapturNameAry containsObject:@"Login"])
        {
            [imageData writeToFile:savedImagePath atomically:NO];

        }

    }
    UIImageWriteToSavedPhotosAlbum([self loadImage:@"Login_Provider"],self,@selector(image:didFinishSavingWithError:contextInfo:),NULL);


    //--------------------------------------------------------------------------------------//

}
- (void)image:(UIImage*)image didFinishSavingWithError:(NSError*)error contextInfo:(void*)contextInfo
{
    if (error == nil)
    {
        NSLog(@"Login Image saved successfully.");
    }
    else
    {
        NSLog(@"Error occurred:%@",[error localizedDescription]);
    }
}

You can get the saved image using following method 您可以使用以下方法获取保存的图像

- (UIImage*)loadImage:(NSString*)imageName 
{

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"ProviderID_%@",providerIdStr]];

    NSString *fullPath = [dataPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",imageName]];

    return [UIImage imageWithContentsOfFile:fullPath];

}

To take the screenshot you can use the following code. 要获取屏幕截图,您可以使用以下代码。

UIGraphicsBeginImageContext(self.window.bounds.size);
[self.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * data = UIImagePNGRepresentation(image);
[data writeToFile:@"screen.png" atomically:YES];

For Ratina display device you have to check: 对于Ratina显示设备,您必须检查:

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
    UIGraphicsBeginImageContextWithOptions(self.window.bounds.size, NO, [UIScreen mainScreen].scale);
else
    UIGraphicsBeginImageContext(self.window.bounds.size);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM