• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 在数组中添加捕获的图像并在 Collection View 中显示并上传到服务器 iOS

[复制链接]
菜鸟教程小白 发表于 2022-12-13 00:25:52 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我需要一张一张地捕获多张图像并将它们存储在一个数组中,在 Collection View 中显示存储的图像,然后将它们上传到服务器。

我对这个概念进行了很多搜索,但这些解决方案都不适合我,数组为空。

我试过下面的代码:

 - (IBAction)CaptureClickedid)sender {

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

- (void)imagePickerControllerDidCancelUIImagePickerController *)picker {

[picker dismissViewControllerAnimated:YES completion:NULL];

}

- (void)imagePickerControllerUIImagePickerController *)picker didFinishPickingMediaWithInfoNSDictionary *)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];
 }



Best Answer-推荐答案


首先,您需要创建一个字典结构,将值设置在字典中,并以这种方式将此字典添加到数组中:

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])

这用于 func imagePickerController(_picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])

现在您可以根据 NSdata 在 Collection View 上显示图像。

现在在 web 服务中,我以这种方式传递图像数据:

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

您可以在您的网络服务中添加此代码片段,因为我向您展示了循环用于计算图像,在此基础上您可以发送多个图像。

关于ios - 在数组中添加捕获的图像并在 Collection View 中显示并上传到服务器 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43134902/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap