2011-12-12 10 views
7

मैं एक ऐप बना रहा हूं जिसमें आप चित्र बना सकते हैं या कैमरा रोल से एक छवि ले सकते हैं और इन्हें ऐप के अंदर एक टेबलव्यू और विवरणव्यू में प्रदर्शित करने के लिए सहेज सकते हैं। समस्या यह है कि जब मैं ऐप के अंदर से एक तस्वीर बनाता हूं और इसे सहेजता हूं, तो टेबलव्यू और विवरणदृश्य बहुत धीमा हो जाता है जैसे कि ऐप ठंडा हो रहा है। मुझे यह त्रुटि भी मिलती है ": CGAffineTransformInvert: एकवचन मैट्रिक्स।"। जब मैं कैमरे-रोल से एक तस्वीर लोड करता हूं जिसे मेरे ऐप के अंदर से नहीं लिया गया था, तो कोई समस्या नहीं है और ऐप बहुत मुस्कुराता है।कैमरा और कैमरा रोल से छवियों को लोड और सहेजने में समस्याएं। मैं क्या गलत कर रहा हूं?

-(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]; 
} 

यह वह जगह है जहां मैं इसे कैमरा रोल में बचाने के लिए और एक imageView में छवि डाल:

-(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]; 

यह जब मैं कैमरे और कैमरा रोल को खोलने के लिए कोड है }

और यहाँ मैं अपने ऐप के अंदर छवि को बचाने:

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

}

मैं क्या गलत कर रहा हूं?

उत्तर

0

कोशिश इस प्रतिनिधि-विधि जोड़ने को देखने के लिए क्या त्रुटि है:

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

आपके उत्तर के लिए टैंक और मैंने आपका कोड जोड़ा लेकिन ऐसा लगता है कि कोई वास्तविक त्रुटि नहीं है क्योंकि यह केवल पहले एनएसएलओजी तक पहुंचती है। क्या यह शायद मामला हो सकता है कि मैं जिन छवियों को सहेज रहा हूं वे स्मृति के मामले में बहुत बड़े हैं? –

0

को बचाने के लिए अपने आवेदन didFinishLaunchingWithOptions विधि में इस प्रयास करें:

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

सबसे पहले बचत अपनी छवि से क्लिक किया कोशिश कैमरा कहीं एनएसडीटा के रूप में और फिर एनएसडीएटा फॉर्म में छवि तक पहुंचें, इसे यूआईएममेज में परिवर्तित करें और छवि दृश्य पर प्रदर्शित करें। (UIImagePickerController *) पिकर didFinishPickingMediaWithInfo: (NSDictionary *) की जानकारी {

-

- (शून्य) imagePickerController

उदाहरण के लिए यदि आप एक plist आप विधि में NSData के रूप में छवि को बचा सकता है जहां बनाने के लिए दस्तावेज़ निर्देशिका का उपयोग कर सकते हैं

}

और जब विधि आप प्रयोग किया जाता में छवि बचत - - (IBAction) को बचाने: (आईडी) इस { }

आप दस्तावेज़ निर्देशिका में प्लेस्ट से उसी छवि तक पहुंच सकते हैं। NSData को UIImage के रूप में बदलें और इसे छवि दृश्य पर प्रदर्शित करें। मुझे यकीन है कि तब कोई त्रुटि नहीं टिकेगी।

यह त्रुटि ": CGAffineTransformInvert: एकवचन मैट्रिक्स।" छवि की छवि अभिविन्यास संपत्ति के कारण होता है। जब छवि को एनएसडाटा के रूप में सहेजते हैं तो छवि संपत्ति संग्रहीत होती है। और आपको कोई त्रुटि नहीं होने पर छवि मिलती है।

0

तुम कुछ

-(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

लागू करने की आवश्यकता आप उपयोग करने की आवश्यकता:,

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

रूप Jensen2K कहते didFinishSavingWithError भी कहा जाता है यदि कोई:

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

और लागू त्रुटि ताकि आप यह बताने के लिए इसका उपयोग कर सकें कि बचत कब समाप्त हो गई है।

संबंधित मुद्दे