0

我正在創建的應用程序以四種方式上傳圖像(第四種是測試功能)方式;當我上傳到服務器時,UIImageWriteToSavedPhotosAlbum圖片崩潰我的應用程序

與UIImagePickerControllerSourceTypeCamera

1.Directly從的UIImagePickerController這樣的:

//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拍攝的圖像defa (相同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」

我知道這個輸出源於對已發佈對象的嘗試訪問,並且我遇到並在其他情況下解決了這個問題。但是在這裏還沒有找到辦法,即使在反覆檢查我的內存分配之後。

我真的很感謝解決這個問題的方法。

+0

你是如何找到在#3的映像文件名稱?你在檢查,看看你是否得到一個有效的圖像? imageData是否有效,並且如果在調試器中檢查它,是否說明了合理的字節數? – 2010-02-08 04:33:15

+0

我通過遍歷數組 獲取imageFileName。 。 。 NSArray * directoryContent = [[NSFileManager defaultManager] directoryContentsAtPath:ImagePath]; 是的。這是一個有效的圖像,它有5763072個字節分配給create_image(CGImage *,...) – erastusnjuki 2010-02-12 03:24:17

回答

0

iPhone OS創建了另一個與默認的100APPLE不同的文件夾「/ private/var/mobile/Media/DCIM/101APPLE /」。

我意識到,實際上有時照片也保存在文件夾999APPLE,102APPLE等中。這取決於您如何在相機膠捲中刪除,複製和創建照片。

因此,您的相機膠捲圖片實際上可以存儲在許多不同的文件夾中。

因此,不能夠執行[NSData dataWithContentsOfFile:ImagePath];,它會拋出異常:

「EXC_BAD_ACCESS」

相關問題