В настоящее время я работаю над приложением iOS, где вы можете взять изображение и загрузить его на сервер.XCode Отправка изображения на сервер
У меня это работает отлично в тренажерах, однако при тестировании на устройстве я получаю предупреждение о принятой памяти, а затем он падает.
Существует довольно немного больше в моем коде, я просто пытаюсь показать биты, которые имеют отношение к моей проблеме:
Я пытаюсь отправить два изображения, полученные с помощью сборщика фотографий на устройстве это сохраняется в телефоне и передается через экран оплаты:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *image=[info objectForKey:@"UIImagePickerControllerOriginalImage"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithString: "name.jpg"] ];
NSData* data = UIImageJPEGRepresentation(image,1.0);
[data writeToFile:path atomically:YES];
}
на экране оплаты у меня есть этот код, чтобы отправить его на сервер и скрипт PHP отправляет службу PayPal:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent: [NSString stringWithString: @"name.jpg"] ];
NSData *imageData = UIImageJPEGRepresentation([UIImage imageWithContentsOfFile:path]);
NSString *urlString = @"http://server.com/payment.php?";
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"backfile\"; filename=\"back.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: image/jpeg\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[webView loadRequest:request];
[self.view addSubview:webView];
[request setHTTPBody:body];
Извините, если это не слишком ясно, пожалуйста, дайте мне знать. Он отправляет изображения на сервер, но приложение будет аварийно завершено. Я попытался изменить размер изображений, но мне они нужны при наилучшем качестве. Если я отправить масштабируется вниз изображения с помощью:
UIGraphicsBeginImageContext(frontSize);
[frontimg drawInRect:CGRectMake(0,0,242,444)];
UIImage* realfrontImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *frontImageData = UIImageJPEGRepresentation(image, 1.0);
Он работает, однако качество изображения 72ppi, когда мне нужно это около 300
Любая помощь будет оценена.
Мое решение вокруг этого ответа. Я должен загружать оба изображения в отдельные сообщения, а затем загружать веб-представление, все еще имея проблемы с размером изображения, он занимает много времени. – chrisw