2016-08-03 19 views
0

aufgenommene Bild speichern erfasst I Bild unten CodeWie in dem Dokument Verzeichnis

AVCaptureSession *session = [[AVCaptureSession alloc] init]; 
session.sessionPreset = AVCaptureSessionPresetMedium; 

CALayer *viewLayer = self.vImagePreview.layer; 
NSLog(@"viewLayer = %@", viewLayer); 

AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session]; 

captureVideoPreviewLayer.frame = self.vImagePreview.bounds; 
[self.vImagePreview.layer addSublayer:captureVideoPreviewLayer]; 

AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 

NSError *error = nil; 
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error]; 
if (!input) { 
    // Handle the error appropriately. 
    NSLog(@"ERROR: trying to open camera: %@", error); 
} 
[session addInput:input]; 

[session startRunning]; 

_stillImageOutput = [[AVCaptureStillImageOutput alloc] init]; 
NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys: AVVideoCodecJPEG, AVVideoCodecKey, nil]; 
[_stillImageOutput setOutputSettings:outputSettings]; 

[session addOutput:_stillImageOutput]; 

, wenn ich die Taste drücken

AVCaptureConnection *videoConnection = nil; 
     for (AVCaptureConnection *connection in _stillImageOutput.connections) 
{ 
    for (AVCaptureInputPort *port in [connection inputPorts]) 
    { 
     if ([[port mediaType] isEqual:AVMediaTypeVideo]) 
     { 
      videoConnection = connection; 
      break; 
     } 
    } 
    if (videoConnection) { break; } 
} 

NSLog(@"about to request a capture from: %@", _stillImageOutput); 
[_stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error) 
{ 
    CFDictionaryRef exifAttachments = CMGetAttachment(imageSampleBuffer, kCGImagePropertyExifDictionary, NULL); 
    if (exifAttachments) 
    { 
     // Do something with the attachments. 
     NSLog(@"attachements: %@", exifAttachments); 
    } 
    else 
     NSLog(@"no attachments"); 

    NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]; 
    UIImage *image = [[UIImage alloc] initWithData:imageData]; 



    self.vImage.image = image; 
    _vImage.hidden=YES; 
    UIStoryboard *storybord=[UIStoryboard storyboardWithName:@"Main" bundle:nil]; 

    shareViewController *shareview=[storybord instantiateViewControllerWithIdentifier:@"share"]; 
    [self presentViewController:shareview animated:YES completion:nil]; 

    shareview.shareimageview.image=image; 

    NSMutableArray *temparray = [NSMutableArray arrayWithObjects:image,nil]; 
    NSMutableArray *newparsetile=[@[@"you"]mutableCopy]; 
    shareview.newtile=newparsetile; 
    shareview.selectedimgarray=temparray; 


    [[NSNotificationCenter defaultCenter] postNotificationName:@"Shareimage" object:image]; 


}]; 

wie das Ausgangsbild zu speichern, um das Gerät Dokumentenverzeichnis kann jeder Körper mir helfen, mit Code zu antworten ist geschätzt, da ich neu zu dem ios Ziel c bin, die Leute, die die Kamera wie instagram anpassen möchten, können meinen Code verwenden, der 100% arbeitet

Antwort

0
// Saving it to documents direcctory 
    NSArray *directoryPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *documentDirectory = [directoryPaths objectAtIndex:0]; 
    NSString* filePath = [documentDirectory stringByAppendingPathComponent:@"FileName.png"]; 
    NSData *imageData = // Some Image data; 
    NSURL *url = [NSURL fileURLWithPath:filePath]; 

    if ([imageData writeToURL:url atomically:YES]) { 
     NSLog(@"Success"); 
    } 
    else{ 
     NSLog(@"Error"); 
    } 

Sie können den obigen Code verwenden, um ein Bild im Dokumentenverzeichnis zu speichern. Anstelle der Image-Variable können Sie Ihre Variable übergeben.

+0

Danke für die schnelle Antwort-aber wir werden diese NSData * imagedata = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation: imageSampleBuffer] neu zu definieren; –

+0

@SatheeshkumarNaidu: Ok, Sie können einfach schreiben den Code, wo immer Sie ein Bild in Dokumente Verzeichnis nach Ihren Bedürfnissen schreiben möchten.Ich bearbeite die Antwort, wenn es Ihr Problem löst. Markieren Sie es als Antwort, um anderen zu helfen. – ManiaChamp

+0

es wird nicht gespeichert.In diesem Platz, was soll ich geben –

1
NSData *pngData = UIImagePNGRepresentation(image); 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsPath = [paths objectAtIndex:0]; //Get the docs directory 
NSString *filePath = [documentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"image_name”]]; //Add the file name 
[pngData writeToFile:filePath atomically:YES]; //Write the file 
+0

Wo sollte ich das in meinem Code hinzufügen –

+0

In der Schaltfläche klicken Ereignis nach der Aufnahme/Auswahl des Bildes. – Palanichamy

+0

app wird bei NSString abgestürzt * filePath = [dokumentePfad stringByAppendingPathComponent: [NSString stringWithFormat: @ "image_name"]]; ohne Werbung für Absturzmeldung im Protokoll –