загрузить фотографию с устройства в iOS4 - PullRequest
0 голосов
/ 24 июля 2010

Я хочу загрузить счетчик UIImages из PhotoAlbum за раз и отобразить в UIView. в iOS3 может понравиться:

NSString *file_path = @"/var/mobile/Media/DCIM/100APPLE/" 
NSArray *imageSource = [fileManager contentsOfDirectoryAtPath:file_path error:nil] ; 

UIImage *image = [UIImage imageWithContentsOfFile:[imageSource objectAtIndex:index]] ;
if (!image) {
NSLog(@"load image fail : %@" ,[imageSource objectAtIndex:index]) ;
}
return image ;

и в iOS3 этот метод работает! но теперь в iOS4 я знаю, что путь был изменен на

@"/var/mobile/Media/PhotoData/100APPLE/"

и imageSource могут анализировать файл двух типов: .BTH (полный размер) .THM (миниатюра), но он не может читать BTH из [UIImage imageWithContentsOfFile:XXX.BTH]

есть ли решение этой проблемы? или этот метод должен быть отклонен от Apple?

Большое спасибо!

Ответы [ 3 ]

1 голос
/ 25 сентября 2010

На самом деле я не нашел лучшего способа отобразить целые изображения в моем собственном контроллере.Я настраиваю поток в соответствии с моими требованиями.

 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage: (UIImage *)image editingInfo:(NSDictionary *)editingInfo{

 // Transform image to NSData
 NSData *imageData = UIImagePNGRepresentation(image);

 // Create your path with Customized file-name   
 NSString *paths=NSHomeDirectory();   
 NSString *filename=@"XXXX.png";
 NSString *save=[paths stringByAppendingPathComponent:filename];   

 [imageData writeToFile:save atomically:NO];   

 [picker dismissModalViewControllerAnimated:YES];  

}

Этот метод происходит, когда пользователь нажимает на палец.если вы хотите выполнить множественный выбор, мое решение состоит в том, чтобы использовать NSOperation , чтобы справиться с сохранением файла, и все равно нужно, чтобы пользователь нажал на палец. фотоизображение после UIImagePNGRпредставление (изображение), исходное изображение (1200x1600) почти 300Кб

1 голос
/ 24 июля 2010

Я не думаю, что вам разрешено заходить в файловую систему, чтобы получать фотографии, ваше приложение будет полностью отклонено.Вы должны попробовать что-то вроде этого:

-(IBAction)openAlbums {
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
        UIImagePickerController *UIPicker = [[UIImagePickerController alloc] init];
        UIPicker.allowsImageEditing = NO;
        UIPicker.delegate = self;
        UIPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        [self presentModalViewController:UIPicker animated:YES];
    }
    else {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Error" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
        [alert show];
        [alert release];
    }
}

Конечно, это не будет ТОЧНЫЙ код , который вы в частности захотите использовать, поэтому просто измените его под свои нужды.1006 *

0 голосов
/ 07 мая 2012

используйте эти два метода для загрузки вашего фотоформата.

-(void)takePhoto:(id)sender
 {
  UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];

  //Use camera if device has one otherwise use photo library
  if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
   {
     [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
   }
  else
  {
    [imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
   }

   [imagePicker setDelegate:self];

   //Show image picker
   [self presentModalViewController:imagePicker animated:YES];
   //Modal so we wait for it to complete
   [imagePicker release];
     }

  //********** RECEIVE PICTURE **********
  - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
  { 
  //Get image
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

  //Display in ImageView object (if you want to display it
    [playerImage setImage:image];

  //Take image picker off the screen (required)
    [self dismissModalViewControllerAnimated:YES];
  }
...