天天看點

通過調用系統攝像頭拍照,拍視訊

通過調用系統攝像頭拍照,拍視訊

- (IBAction)takePicture:(id)sender {

        UIImagePickerController *picker = [[UIImagePickerController alloc] init];

        if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerS ourceTypeCamera]) {

                picker.sourceType = UIImagePickerControllerS ourceTypeCamera;

                NSArray *temp_MediaTypes = [UIImagePickerController availableMediaTypesForSo urceType:picker.sourceType];

                picker.mediaTypes = temp_MediaTypes;

                picker.delegate = self;

                picker.allowsImageEditing = YES;       

        }

        [self presentModalViewControll er:picker animated:YES];

        [picker release];

}

//下面兩個函數是遵守 UIImagePickerControllerD elegate這個協定所實作的類.這樣就能夠完整的實作,擷取照片或者視訊,然後寫入檔案的過程.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWit hInfo:(NSDictionary *)info

{

        NSString *mediaType = [info objectForKey:UIImagePickerControllerM ediaType];

        BOOL success;

        NSFileManager *fileManager = [NSFileManager defaultManager];

        NSError *error;

        NSArray *paths = NSSearchPathForDirectori esInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

        NSString *documentsDirectory = [paths objectAtIndex:0];

        if ([mediaType isEqualToString:@"public.image"]){

                UIImage *image = [info objectForKey:@"UIImagePickerControllerE ditedImage"];

                NSLog(@"found an image");

                NSString *imageFile = [documentsDirectory stringByAppendingPathCom ponent:@"temp.jpg"];

                NSLog(@"%@", imageFile);

                success = [fileManager fileExistsAtPath:imageFile];

                if(success) {

                        success = [fileManager removeItemAtPath:imageFile error:&error];

                }

                imageView.image = image;

                [UIImageJPEGRepresentatio n(image, 1.0f) writeToFile:imageFile atomically:YES];

                //SETIMAGE(image);

                //CFShow([[NSFileManager defaultManager] directoryContentsAtPath:[NSHomeDirectory() stringByAppendingString:@"/Documents"]]);

        }

        else if([mediaType isEqualToString:@"public.movie"]){

                NSURL *videoURL = [info objectForKey:UIImagePickerControllerM ediaURL];

                NSLog(@"%@", videoURL);

                NSLog(@"found a video");

                NSData *videoData = [NSData dataWithContentsOfURL:videoURL];

                NSString *videoFile = [documentsDirectory stringByAppendingPathCom ponent:@"temp.mov"];

                NSLog(@"%@", videoFile);

                success = [fileManager fileExistsAtPath:videoFile];

                if(success) {

                        success = [fileManager removeItemAtPath:videoFile error:&error];

                }

                [videoData writeToFile:videoFile atomically:YES];

                //CFShow([[NSFileManager defaultManager] directoryContentsAtPath:[NSHomeDirectory() stringByAppendingString:@"/Documents"]]);

                //NSLog(videoURL);

        }

        [picker dismissModalViewControll erAnimated:YES];

}

- (void)imagePickerControllerDid Cancel:(UIImagePickerController *)picker {

        [picker dismissModalViewControll erAnimated:YES];

}