当我上传到服务器时,UIImageWriteToSavedPhotosAlbum图片会崩溃我的应用程序

时间:2010-02-08 04:01:02

标签: iphone image uiimageview uiimagepickercontroller exc-bad-access

我正在创建的应用程序上传四个图像(第四个是测试功能)方式;

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; 

*到此为止,用户可以在屏幕上以四种方式中的任何一种方式查看文件,添加到UIImageView的myImage实例中(具体取决于用户选择)。这证明我选择了正确的文件(三个和四个)。

//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 :(得分:0)

iPhone OS创建了另一个与默认100APPLE不同的文件夹“/ private / var / mobile / Media / DCIM / 101APPLE /”。

我意识到实际上有时照片也会保存在999APPLE,102APPLE等文件夹中。这取决于您在相机胶卷中删除,复制和创建照片的方式。

因此,您的相机胶卷图片实际上可以存储在许多不同的文件夹中。

因此,无法执行[NSData dataWithContentsOfFile:ImagePath];,它会抛出异常:

“EXC_BAD_ACCESS”