2011-01-27 20 views
5

iphone अनुप्रयोग में कैमरा खोलने के लिए कैसे ... imagepickerview का उपयोग कर हम इतना है कि हम चित्र ले जा सकते हैं कैमरा एप्लिकेशन खोलने के लिए library..how खोल सकते हैं जैसा ..उद्घाटन कैमरा प्रोग्राम के

उत्तर

5

आप की जरूरत है UIImagePickerController का उपयोग करें।

picker.sourceType = UIImagePickerControllerSourceTypeCamera; 

आप UIImagePickerControllerDelegate विधि imagePickerController:didFinishPickingMediaWithInfo: लागू करने के लिए और फिर UIImage, आप चाहते हैं जो कुछ भी फ़ाइल नाम के साथ, जहां भी आप चाहते करने के लिए स्टोर NSFileManager तरीकों का उपयोग कर सकते है।

+0

कैसे है कि कैमरे को खोलने के लिए ... आप कुछ नमूना पोस्ट कर सकते हैं कोड ... –

+0

प्रलेखन पढ़ें, इसमें नमूना कोड – KingofBliss

+0

एक और सवाल है .. हम कैसे आईफोन में सर्वर पर छवियों/ऑडियो/वीडियो अपलोड कर सकते हैं ..? क्या आप कोई सहायक लिंक दे सकते हैं ....? –

0
picker.sourceType = UIImagePickerControllerSourceTypeCamera; 

इस कोड को डिवाइस कैमरा ट्रिगर किया जाएगा ..

+0

- (आईबीएक्शन) पकड़ो छवि: (आईडी) प्रेषक { \t UIImagePickerController * picker = [[UIImagePickerController alloc] init]; \t picker.delegate = self; \t picker.allowsEditing = हाँ; \t picker.sourceType = UIImagePickerControllerSourceTypeCamera; \t [स्वयं उपस्थित मॉड्यूल दृश्य नियंत्रक: पिकर एनिमेटेड: हाँ]; \t [पिकर रिलीज]; } – nik

+0

एक और सवाल .. हम कैसे आईफोन में सर्वर पर छवियों/ऑडियो/वीडियो अपलोड कर सकते हैं ..? क्या आप कोई सहायक लिंक दे सकते हैं ....? –

+0

@ कुल्दीप उन्हें एनएसडीटा में परिवर्तित करें और फिर सर्वर पर अपलोड करें – KingofBliss

8

संपादित करें: 15 मार्च, 2016 - यहाँ मेरी पूर्व उत्तर की एक तेज संस्करण, है आप उद्देश्य-सी संस्करण आप करेंगे के लिए देख रहे हैं इसे नीचे पाएं।

- स्विफ्ट -

पहले UIImagePickerControllerDelegate प्रोटोकॉल और UINavigationControllerDelegate प्रोटोकॉल

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate 

लांच चित्र पिकर

func actionLaunchCamera() 
{ 
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera) 
    { 
     let imagePicker:UIImagePickerController = UIImagePickerController() 
     imagePicker.delegate = self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.Camera 
     imagePicker.allowsEditing = true 

     self.presentViewController(imagePicker, animated: true, completion: nil) 
    } 
    else 
    { 
     let alert:UIAlertController = UIAlertController(title: "Camera Unavailable", message: "Unable to find a camera on this device", preferredStyle: UIAlertControllerStyle.Alert) 
     self.presentViewController(alert, animated: true, completion: nil) 
    } 
} 

UIImagePickerDelegate प्रोटोकॉल

के लिए प्रतिनिधि के तरीकों को लागू करने के अनुरूप
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) 
{ 
    // create a filepath with the current date/time as the image name 
    let savePath:String = self.documentsPath()! + "/" + self.presentDateTimeString() + ".png" 

    // try to get our edited image if there is one, as well as the original image 
    let editedImg:UIImage? = info[UIImagePickerControllerEditedImage] as? UIImage 
    let originalImg:UIImage? = info[UIImagePickerControllerOriginalImage] as? UIImage 

    // create our image data with the edited img if we have one, else use the original image 
    let imgData:NSData = editedImg == nil ? UIImagePNGRepresentation(editedImg!)! : UIImagePNGRepresentation(originalImg!)! 

    // write the image data to file 
    imgData.writeToFile(savePath, atomically: true) 

    // dismiss the picker 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 

func imagePickerControllerDidCancel(picker: UIImagePickerController) 
{ 
    // picker cancelled, dismiss picker view controller 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 


// added these methods simply for convenience/completeness 
func documentsPath() ->String? 
{ 
    // fetch our paths 
    let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true) 

    if paths.count > 0 
    { 
     // return our docs directory path if we have one 
     let docsDir = paths[0] 
     return docsDir 
    } 
    return nil 
} 

func presentDateTimeString() ->String 
{ 
    // setup date formatter 
    let dateFormatter:NSDateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss" 

    // get current date 
    let now:NSDate = NSDate() 

    // generate date string from now 
    let theDateTime = dateFormatter.stringFromDate(now) 
    return theDateTime 

} 

- ऑब्जेक्टिव-सी -

संपादित करें: अगर कैमरा लॉन्च करने के लिए प्रयास करने से पहले उपलब्ध है की जाँच करने के लिए अद्यतन। ऐप सैंडबॉक्स के भीतर दस्तावेज़ फ़ोल्डर में एक पीएनजी फोटो को सहेजने के तरीके को दिखाते हुए कोड भी जोड़ा गया।

इसे आज़माएं (यह एआरसी का उपयोग करता है)।

-(void)actionLaunchAppCamera 
{ 
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
      { 
       UIImagePickerController *imagePicker = [[UIImagePickerController alloc]init]; 
       imagePicker.delegate = self; 
       imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
       imagePicker.allowsEditing = YES; 

       [self presentModalViewController:imagePicker animated:YES]; 
      }else{ 
       UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Camera Unavailable" 
                   message:@"Unable to find a camera on your device." 
                   delegate:nil 
                cancelButtonTitle:@"OK" 
                otherButtonTitles:nil, nil]; 
       [alert show]; 
       alert = nil; 
      } 
} 

फिर एक को संभालने के लिए प्रतिनिधि प्रोटोकॉल को लागू: चित्र पिकर (कैमरा) लॉन्च

@interface MyViewController : UIViewController <UINavigationControllerDelegate,UIImagePickerControllerDelegate> 

मीटर फ़ाइल में:

ज फ़ाइल में प्रतिनिधि प्रोटोकॉल के अनुरूप उपयोगकर्ता घटना रद्द या फोटो सहेजें/संपादित/आदि।

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    //This creates a filepath with the current date/time as the name to save the image 
    NSString *presentTimeStamp = [Utilities getPresentDateTime]; 
    NSString *fileSavePath = [Utilities documentsPath:presentTimeStamp]; 
    fileSavePath = [fileSavePath stringByAppendingString:@".png"]; 

//This checks to see if the image was edited, if it was it saves the edited version as a .png 
if ([info objectForKey:UIImagePickerControllerEditedImage]) { 
    //save the edited image 
    NSData *imgPngData = UIImagePNGRepresentation([info objectForKey:UIImagePickerControllerEditedImage]); 
    [imgPngData writeToFile:fileSavePath atomically:YES]; 


}else{ 
    //save the original image 
    NSData *imgPngData = UIImagePNGRepresentation([info objectForKey:UIImagePickerControllerOriginalImage]); 
    [imgPngData writeToFile:fileSavePath atomically:YES]; 

} 

[self dismissModalViewControllerAnimated:YES]; 

} 

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 
{ 
    [self dismissModalViewControllerAnimated:YES]; 
} 

भी संपादित में जोड़ा: यहाँ तरीकों यह दस्तावेज़ पथ और वर्तमान दिनांक/समय प्राप्त करने के लिए उपयोगिताएँ वर्ग संदर्भित

+(NSString *)documentsPath:(NSString *)fileName { 
    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    return [documentsDirectory stringByAppendingPathComponent:fileName]; 
} 


+(NSString *)getPresentDateTime{ 

    NSDateFormatter *dateTimeFormat = [[NSDateFormatter alloc] init]; 
    [dateTimeFormat setDateFormat:@"dd-MM-yyyy HH:mm:ss"]; 

    NSDate *now = [[NSDate alloc] init]; 

    NSString *theDateTime = [dateTimeFormat stringFromDate:now]; 

    dateTimeFormat = nil; 
    now = nil; 

    return theDateTime; 
} 
0

// ओपन गैलरी के लिए कर रहे हैं

UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
imagePickerController.delegate = self; 
if([[[UIDevice currentDevice] systemVersion] floatValue]>=8.0) 
{ 
    [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 

     [self presentViewController:imagePickerController animated:YES completion:nil]; 
    }]; 
} 
else{ 

    [self presentViewController:imagePickerController animated:YES completion:nil]; 
} 

// खुले कैमरा

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
{ 
    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 
    imagePickerController.modalPresentationStyle = UIModalPresentationFullScreen; 
    imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; 
    imagePickerController.delegate = self; 
    if([[[UIDevice currentDevice] systemVersion] floatValue]>=8.0) 
    { 
     [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 

      [self presentViewController:imagePickerController animated:YES completion:nil]; 
     }]; 
    } 
    else{ 
     [self presentViewController:imagePickerController animated:YES completion:nil]; 
    } 
} 
0

यहां डिजिटल हाउंड के उत्तर का एक अद्यतन संस्करण है जो स्विफ्ट 3 के लिए काम करता है।

कार्रवाई लॉन्च कैमरा समारोह:

func actionLaunchCamera() 
{ 
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) 
    { 
     let imagePicker:UIImagePickerController = UIImagePickerController() 
     imagePicker.delegate = self 
     imagePicker.sourceType = UIImagePickerControllerSourceType.camera 
     imagePicker.allowsEditing = true 

     self.present(imagePicker, animated: true, completion: nil) 
    } 
    else 
    { 
     let alert:UIAlertController = UIAlertController(title: "Camera Unavailable", message: "Unable to find a camera on this device", preferredStyle: UIAlertControllerStyle.alert) 
     alert.addAction(UIAlertAction(title: "Dismiss", style: .default, handler: nil)) 
     alert.view.tintColor = UIColor(red:0.37, green:0.66, blue:0.44, alpha:1.0) 
     self.present(alert, animated: true, completion: nil) 
    } 

} 

प्रतिनिधि कार्य:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
     // create a filepath with the current date/time as the image name 
     let savePath:URL = URL(fileURLWithPath: self.documentsPath()! + "/" + self.presentDateTimeString() + ".png") 
     // try to get our edited image if there is one, as well as the original image 
     let editedImg:UIImage? = info[UIImagePickerControllerEditedImage] as? UIImage 
     let originalImg:UIImage? = info[UIImagePickerControllerOriginalImage] as? UIImage 

     // create our image data with the edited img if we have one, else use the original image 
     let imgData:Data = editedImg == nil ? UIImagePNGRepresentation(editedImg!)! : UIImagePNGRepresentation(originalImg!)! as Data 

     // write the image data to file 
     try! imgData.write(to: savePath, options: []) 

     // dismiss the picker 
     self.dismiss(animated: true, completion: nil) 
    } 

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
     // picker cancelled, dismiss picker view controller 
     self.dismiss(animated: true, completion: nil) 
    } 


    // added these methods simply for convenience/completeness 
    func documentsPath() ->String? 
    { 
     // fetch our paths 
     let paths = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true) 

     if paths.count > 0 
     { 
      // return our docs directory path if we have one 
      let docsDir = paths[0] 
      return docsDir 
     } 
     return nil 
    } 

    func presentDateTimeString() ->String 
    { 
     // setup date formatter 
     let dateFormatter:DateFormatter = DateFormatter() 
     dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss" 

     // get current date 
     let now:Date = Date() 

     // generate date string from now 
     let theDateTime = dateFormatter.string(from: now) 
     return theDateTime 
    } 

यह वही मेरे लिए काम किया है।

0

चरण 1: की पुष्टि करें UIImagePickerControllerDelegate , UINavigationControllerDelegate

के चरण 2: (आईओएस 10+) अपने Info.plist फाइल करने के लिए कुंजी के रूप में इस जोड़े कुंजी: गोपनीयता - कैमरा प्रयोग विवरण
मूल्य: #Your संदेश

चरण 3: और अपने @IBAction में इस

if UIImagePickerController.isSourceTypeAvailable(.camera) { 
     var imagePicker = UIImagePickerController() 
     imagePicker.delegate = self 
     imagePicker.sourceType = .camera 
     imagePicker.allowsEditing = false 
     self.present(imagePicker, animated: true, completion: nil) 
    } 
संबंधित मुद्दे