2011-12-12 26 views
7

Resim çekebileceğiniz veya kamera rulosundan bir görüntü seçebileceğiniz ve bunları bir tablo görünümünde ve ayrıntı görünümünde görüntülenecek şekilde uygulamanın içine kaydedebileceğiniz bir uygulama yapıyorum. Sorun, uygulamanın içinden resim oluşturup kaydettiğimde, tablo görünümü ve ayrıntı görünümü, uygulama donuyormuş gibi yavaş yavaş gerçekleşiyor. Ayrıca bu hatayı alıyorum: "CGAffineTransformInvert: singular matrix." Uygulamamın içinden alınmadığı kamera tepsisinden bir fotoğraf yüklediğimde sorun yok ve uygulama çok sessiz çalışıyor.Fotoğraf makinesini ve kamera rulosundan yükleme ve kaydetme sorunları. Neyi yanlış yapıyorum?

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ 
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType]; 
UIImage *mijnImage; 
if (CFStringCompare((__bridge_retained CFStringRef)mediaType, kUTTypeImage, 0)==kCFCompareEqualTo) { 
    mijnImage = (UIImage *) [info objectForKey:UIImagePickerControllerOriginalImage]; 
    mijnPlaatje_.image = mijnImage; 
    UIImageWriteToSavedPhotosAlbum(mijnImage, nil, nil, nil); 

} 

[picker dismissModalViewControllerAnimated:YES]; 

: Ben kamera rulo kaydetmek ve bir imageView görüntüyü nereye koyduğunuzu

-(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex{ 
if (buttonIndex == actionSheet.cancelButtonIndex) { 
    return; 
} 

UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
picker.delegate = self; 
picker.allowsEditing = NO; 

switch (buttonIndex) { 
    case 0: 
     if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
      picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
     } 
     break; 
    case 1: 
     if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum]) { 
      picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
     } 
     break; 
} 

[self presentModalViewController:picker animated:YES]; 
} 

budur:

Bu

ben kamera ve kamera rulo açtığınızda kodudur }

Ve burada benim app içindeki görüntüyü kaydetmek:

-(IBAction)save:(id)sender{ 
drankjes.plaatje = [mijnPlaatje_ image]; 
[self dismissModalViewControllerAnimated:YES]; 

}

Neyi yanlış yapıyorum?

cevap

0

deneyin bu temsilci-yöntemi ekleme hatası ne olduğunu görmek için:

- (void)image:(UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo { 
    NSLog(@"Saving image"); 
    if(error != nil) { 
     NSLog(@"Error saving: %@",[error localizedDescription]); 
    } 
} 
+0

tankları ve kod ekledim ama gerçek bir hata yok gibi görünüyor çünkü sadece ilk NSLog'a ulaşıyor. Tasarruf ettiğim görüntülerin bellek açısından çok büyük olması belki de olabilir mi? –

0

Başvurunuz didFinishLaunchingWithOptions yönteminde bu deneyin kaydetmek için: Her şeyden

NSString *path = [[NSBundle mainBundle]pathForResource:@"" ofType:@""]; 
UISaveVideoAtPathToSavedPhotosAlbum(path, self, @selector(video:didFinishSavingWithError:contextInfo), nil); 
0

Birinci resim tıklandığı kaydetmeyi deneyin NSData olarak bir yerde kamera ve daha sonra NSData formundaki görüntüye erişebilir, UIImage'da dönüştürüp, imageView üzerinde görüntüleyebilirsiniz. (UIImagePickerController *) seçici didFinishPickingMediaWithInfo: (NSDictionary *) bilgi {

-

- (void) imagePickerController

Örneğin size yönteminde NSData olarak görüntüyü kaydedebilen bir plist oluşturmak için belge dizinini kullanabilirsiniz - - Eğer kullanılan yönteme görüntüyü tasarruf

}

Ve (IBAction) kaydedin: (id) gönderen { }

Belge dizinindeki aynı görüntüye erişebilirsiniz. NSData'yı UIImage olarak kopyalayın ve imageView üzerinde görüntüleyin. Eminim hata oluşmayacaktır.

Bu hata ": CGAffineTransformInvert: tekil matris." Bir görüntünün görüntü yönelim özelliği nedeniyle oluşur. Görüntüyü NSData olarak kaydederken görüntü özelliğini kaydeder.Ve görüntüyü hata olmadan alırsınız.Hiçbir varsa didFinishSavingWithError bile denir,

- (void)image:(UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo { 
    NSLog(@"Saving image"); 
    if(error != nil) { 
     NSLog(@"Error saving: %@",[error localizedDescription]); 
    } 
} 

Jensen2K dediği gibi:

UIImageWriteToSavedPhotosAlbum(image, self, @selector(video:didFinishSavingWithError:contextInfo), nil) 

ve uygulamak:

0

Sen kullanmak gereken bir şey

-(IBAction) pickphoto 
{ 
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) 
    { 
     UIImagePickerController *picker= [[UIImagePickerController alloc]init]; 
     picker.delegate = self; 
     picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
     [yourView presentModalViewController:picker animated:YES]; 
     picker.videoQuality = UIImagePickerControllerQualityTypeHigh; 
     picker.allowsEditing = NO; 
     [picker release]; 
    } 
} 


-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage : (UIImage *)image editingInfo:(NSDictionary *)editingInfo 
{ 
    [picker dismissModalViewControllerAnimated:YES]; 
    myImage.image=image; 
} 
1

uygulamak gerekir hata böylece kaydetme bittiğinde bunu söylemek için kullanabilirsiniz. Cevabınız için

İlgili konular