iOS – 使用EXIF完整上传图像
发布时间:2020-12-14 19:08:53 所属栏目:百科 来源:网络整理
导读:我的图像以.jpg格式保存在我的应用程序文档目录中,带有EXIF数据.我的问题是,每当我尝试将.jpg文件转换为使用HTTP POST上传的NSData时,上传的图像都会丢失其所有EXIF数据. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserD
我的图像以.jpg格式保存在我的应用程序文档目录中,带有EXIF数据.我的问题是,每当我尝试将.jpg文件转换为使用HTTP POST上传的NSData时,上传的图像都会丢失其所有EXIF数据.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *documentsPath = [paths objectAtIndex:0]; NSString *imagePath = [documentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",imageName]]; NSData *jpegImageData = [NSData dataWithContentsOfFile:imagePath]; 如何从文档目录上传我的.jpg文件,其EXIF完好无损? 解决方法
保持jpg文件的EXIF元数据.我使用了解决方案:
- (void)uploadImage:(NSString *)imagePath { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0),^{ // Repair upload data UIImage *image = [UIImage imageNamed:imagePath]; NSData *rawDataImage = UIImageJPEGRepresentation(image,1.0f); NSString *base64EncodedString = @""; if ([rawDataImage respondsToSelector:@selector(base64EncodedStringWithOptions:)]) { base64EncodedString = [rawDataImage base64EncodedStringWithOptions:0]; } else { base64EncodedString = [rawDataImage base64Encoding]; } NSString *uploadBody = [NSString stringWithFormat:@"{"imageData": "%@"}",base64EncodedString]; // Post uploadBody to server NSString *serverUrl = @"Your_server"; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:serverUrl]]; [request addValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; NSString *msgLength = [NSString stringWithFormat:@"%lu",uploadBody.length]; [request addValue:msgLength forHTTPHeaderField:@"Content-Length"]; [request setHTTPMethod:@"POST"]; [request setHTTPBody:[uploadBody dataUsingEncoding:NSUTF8StringEncoding]]; [NSURLConnection connectionWithRequest:request delegate:<your_delegate OR nil>]; }); } 希望这对你有所帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |