как показать видео или фильм в UIImagePickerController? - PullRequest
3 голосов
/ 08 июня 2010

Я использую UIImagePickerController, который дает пользователю возможность выбрать существующую фотографию или использовать камеру, чтобы сделать изображение в это время.И я могу показать это изображение в своем приложении с помощью UIImageView.

Теперь я хочу использовать эту возможность и для фильмов.Но я не смог найти способ показать выбранный фильм в виде изображения в моем приложении, как в приложении «Фотографии».как вы знаете, вы можете видеть фотографии и фильмы в одном списке.

Ответы [ 3 ]

2 голосов
/ 09 июня 2010
-(IBAction) selectImageSelected : (id)sender
{
    actionSheet = [[UIActionSheet alloc] initWithTitle:@"Select Image" 
                                            delegate:self
                                   cancelButtonTitle:@"Cancel"
                              destructiveButtonTitle:nil
                                   otherButtonTitles:@"Take Picture", @"Select from gallery", nil];
    [actionSheet showInView:self.parentViewController.tabBarController.view];
}

- (void)actionSheet:(UIActionSheet *)_actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
    if(buttonIndex==0)
    {
        if( ![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] )
        {
            [AlertHandler showAlertMessage:[ErrorMessages getCameraNotFoundMsg] withTitle:@"No Camera Detected"];
            return;
        }
        else
        {
            imagePicker = [[UIImagePickerController alloc] init];
            imagePicker.delegate = self;
            imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
            [self presentModalViewController:imagePicker animated:YES];
        }
    }
    else if(buttonIndex==1)
    {
        imagePicker = [[UIImagePickerController alloc] init];
        imagePicker.delegate = self;
        imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        imagePicker.mediaTypes =[UIImagePickerController availableMediaTypesForSourceType:imagePicker.sourceType];
        [self presentModalViewController:imagePicker animated:YES];
    }
    else
    {
        [actionSheet dismissWithClickedButtonIndex:2 animated:YES];
    }
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{

    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];

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

        // UIImage *selectedImage = [info objectForKey:UIImagePickerControllerOriginalImage];

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

        NSLog(@"found an image");

//      [UIImageJPEGRepresentation(image, 1.0f) writeToFile:[self findUniqueSavePath] atomically:YES];

//      SETIMAGE(image);

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

    }

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

        NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];

        NSLog(@"found a video");

        NSData *webData = [NSData dataWithContentsOfURL:videoURL];

        //NSData *video = [[NSString alloc] initWithContentsOfURL:videoURL];

//      [webData writeToFile:[self findUniqueMoviePath] atomically:YES];

        CFShow([[NSFileManager defaultManager] directoryContentsAtPath:[NSHomeDirectory() stringByAppendingString:@"/Documents"]]);
        CGSize sixzevid=CGSizeMake(imagePicker.view.bounds.size.width,imagePicker.view.bounds.size.height-100);
        UIGraphicsBeginImageContext(sixzevid);
        [imagePicker.view.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        eventButton.imageView.image=viewImage;
        // NSLog(videoURL);

    }

    [picker dismissModalViewControllerAnimated:YES];

}

/*
- (void)imagePickerController:(UIImagePickerController *)picker 
        didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo1
{
    [imagePicker dismissModalViewControllerAnimated:YES];
    imagePicker.view.hidden = YES;
    eventButton.imageView.image = image;
    imageSelected = YES;
}
*/
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
    [imagePicker dismissModalViewControllerAnimated:YES];   
    imageSelected = NO;
}
1 голос
/ 09 июня 2010

Метод -thumbnailImageAtTime:timeOption: MPMoviePlayerController выглядит так, как будто он может помочь вам получить изображение для отображения.

0 голосов
/ 12 июля 2012

Для просмотра в режиме выбора только с файлами фильмов

замените

imagePicker.mediaTypes =[UIImagePickerController availableMediaTypesForSourceType:imagePicker.sourceType];

на

picker.mediaTypes = [NSArray arrayWithObject:@"public.movie"];
...