UIImageWriteToSavedPhotosAlbum картинки сбивают мое приложение при загрузке на сервер - PullRequest
0 голосов
/ 08 февраля 2010

Приложение, которое я создаю, загружает изображения четырьмя (четвертый - тестовая функция) способом;

1.Прямо из UIImagePickerController с UIImagePickerControllerSourceTypeCamera, например так:

//didFinishPickingImage method
if ([picker sourceType] == UIImagePickerControllerSourceTypeCamera)
{
UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil);
}

CGRect myImageRect = CGRectMake(30.0f, 190.0f, 250.0f, 210.0f); 
myImage = [[UIImageView alloc] initWithFrame:myImageRect];
//released in dealloc because I reuse it alot

myImage.image = img;
[self.view addSubview:myImage]; 

2.Прямой выбор из библиотеки фотографий, также используя

myImage.image = img;

3.Использование изображения, сохраненного с 1.

pathFile = @"/private/var/mobile/Media/DCIM/100APPLE/"; 
NSString *ImagePath = [pathFile stringByAppendingString:imageFileName];
NSData *imageDataFile = [NSData dataWithContentsOfFile:ImagePath];  

UIImage *img = [UIImage imageWithContentsOfFile:ImagePath];

myImage.image = img;

4.Как тестовая функция: использование изображения, полученного с помощью приложения камеры iPhone по умолчанию (аналогично UIImagePickerController), но использование ImagePath вместо UIImagepickerController, UIImagePickerControllerSourceTypePhotoLibrary.

//Same as Number 3.
pathFile = @"/private/var/mobile/Media/DCIM/100APPLE/"; 
NSString *ImagePath = [pathFile stringByAppendingString:imageFileName];
NSData *imageDataFile = [NSData dataWithContentsOfFile:ImagePath];  

UIImage *img = [UIImage imageWithContentsOfFile:ImagePath];

myImage.image = img; 

* Здесь пользователь может увидеть файл любым из четырех способов на экране, добавленных в экземпляр myImage UIImageView (в зависимости от выбора пользователя). Это доказывает, что я выбираю нужные файлы (для трех и четырех).

//uploading function

NSData *imageData = UIImageJPEGRepresentation(myImage.image, 1.0);


NSMutableURLRequest *request2 = [[[NSMutableURLRequest alloc] init] autorelease];
            [request2 setURL:[NSURL URLWithString:urlString]];
            [request2 setHTTPMethod:@"POST"];

NSMutableData *body = [NSMutableData data];
//... append boundary, content-disposition code etc here.
[body appendData:[NSData dataWithData:imageData]];
[request setHTTPBody:body];

Проблема в том, что при загрузке номер 1,2 и 4 работают, НОМЕР 3 НЕ ДЕЛАЕТ.

Консольный вывод; Программа получила сигнал: "EXC_BAD_ACCESS"

Мне известно, что этот вывод связан с попыткой доступа из освобожденных объектов, и я столкнулся и решил эту проблему в других ситуациях. Но здесь пока не нашел пути, даже после контрконтроля моего распределения памяти.

Я ДЕЙСТВИТЕЛЬНО оценил бы способы решения этой проблемы.

1 Ответ

0 голосов
/ 18 февраля 2010

iPhone OS создала другую папку "/ private / var / mobile / Media / DCIM / 101APPLE /", отличную от 100APPLE по умолчанию.

Я понял, что иногда фотографии также сохраняются в папке 999APPLE, 102APPLE и т. Д. Это зависит от того, как вы удаляете, копируете и создаете фотографии в Camera Roll.

Таким образом, ваши снимки с камеры могут быть сохранены в разных папках.

Поэтому, не имея возможности выполнить [NSData dataWithContentsOfFile:ImagePath];, выдает исключение:

"EXC_BAD_ACCESS"

...