2017-03-31 2 views
2

Ich muss mehrere Bilder einzeln erfassen und in einem Array speichern, gespeicherte Bilder in einer Sammlungsansicht anzeigen und sie später auf den Server hochladen.Erfasste Bilder in einem Array hinzufügen und in Sammlung anzeigen und auf Server hochladen iOS

Ich habe viel über dieses Konzept gesucht, aber keine dieser Lösungen funktionierte für mich, Array ist null.

ich unten Code versucht:

- (IBAction)CaptureClicked:(id)sender { 

UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
picker.delegate = self; 
picker.allowsEditing = YES; 
picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
[self presentViewController:picker animated:YES completion:NULL]; 
} 

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { 

[picker dismissViewControllerAnimated:YES completion:NULL]; 

} 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
if (info[UIImagePickerControllerMediaType] == (NSString *) kUTTypeImage) { 

    [self.videoController.view removeFromSuperview]; 
    UIImage *chosenImage = info[UIImagePickerControllerEditedImage]; 
    self->ImageView.image = chosenImage; 
    [picker dismissViewControllerAnimated:YES completion:NULL]; 

    NSData *imageData =[NSData dataWithData:UIImagePNGRepresentation(chosenImage)]; 

    [imageArray addObject:imageData]; 
    [_ImageCollectionVIew reloadData]; 
} 
+0

Fügen Sie Ihren Code Arbeit, die Sie getan haben. –

+0

Ich habe diese Funktion in Swift gemacht, Sie müssen warten ... Ich werde meinen Code teilen ... –

+0

@agent_stack Ich habe. –

Antwort

2

Zuerst eine Struktur Wörterbuch der Werte in einem Wörterbuch gesetzt vornehmen müssen und fügen Sie diese dict in einem Array auf diese Weise:

let imageData = UIImageJPEGRepresentation(image, 0.0)! 
dict.setObject(imageData, forKey: MediaFilesMetaDataConstants.FileData as NSCopying) 
    dict.setObject(IMAGENAME, forKey: MediaFilesMetaDataConstants.FileName as NSCopying) 
    dict.setObject(MediaFilesMetaDataConstants.FileType_Image, forKey: MediaFilesMetaDataConstants.FileType as NSCopying) 
    dict.setObject(thumbData, forKey: MediaFilesMetaDataConstants.Thumbnail as NSCopying) 


kAppDelegate.arrMediaFiles.addObjects(from: [dict as Any]) 

Diese wird verwendet in func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])

Jetzt können Sie Bild auf Sammelansicht auf der Basis von NSdata zeigen.

Jetzt in webservice Ich bin vorbei an den Bilddaten auf diese Weise:

for i in 0 ..< arrImages.count { 
      let dictImage = arrImages[i] as! NSDictionary 
      let fileData = dictImage[MediaFilesMetaDataConstants.FileData] as! NSData 
      let thumbData = dictImage[MediaFilesMetaDataConstants.Thumbnail] as! NSData 
      let type = dictImage[MediaFilesMetaDataConstants.FileType] as! String 
      if(type == MediaFilesMetaDataConstants.FileType_Image) { 
       mimetype = "application/octet-stream" 
      } else { 
       mimetype = "video/mov" 
      } 

if(i == 0) { 
       if(fileData.length > 0) { 
        body.appendString(string: "--\(boundary)\r\n") 
        body.appendString(string: "Content-Disposition: form-data; name=\"file_name0\"; filename=\"\(dictImage[MediaFilesMetaDataConstants.FileName] as! String)\"\r\n") 
        body.appendString(string: "Content-Type: \(mimetype)\r\n\r\n") 
        body.append(fileData as Data) 
        body.appendString(string: "\r\n") 
       } 

        if(thumbData.length > 0) { 
         body.appendString(string: "--\(boundary)\r\n") 
         body.appendString(string: "Content-Disposition: form-data; name=\"thumbnail0\"; filename=\"thumbImage.png\"\r\n") 
         body.appendString(string: "Content-Type: application/octet-stream\r\n\r\n") 
         body.append(thumbData as Data) 
         body.appendString(string: "\r\n") 
        } 



      } 

request.httpBody = body as Data 

Sie können in Ihrem Webservice diesen Code-Snippet hinzufügen, wie ich Ihnen zeigen, dass Schleife für die Berechnung der Bilder verwendet wird, auf dieser Grundlage Sie Kann mehrere Bilder senden.

+0

Vielen Dank für Ihre Hilfe, aber es ist nicht das, was ich suche für :( –

+0

so, was Sie brauchen ...? –

+0

kann ich Bilder direkt im Array speichern? –

Verwandte Themen