私は、サーバーにアップロードする際にUIImageWriteToSavedPhotosAlbumの写真は私のアプリをクラッシュ

StackOverflow https://stackoverflow.com/questions/2219500

質問

Iは4にアップロードする画像を作成していアプリ(第四のテスト関数である)の方法;

1.DirectlyこのようなUIImagePickerControllerSourceTypeCameraと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.Directly使用しても、フォトライブラリから選ぶ

myImage.image = img;

1で保存された画像を3.Using。

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.As:(UIImagePickerControllerと同じ)iPhoneのデフォルトのカメラアプリで撮影した画像を用いて、その代わりにUIImagepickerControllerののImagePathを使用して、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; 

*ここまでは、ユーザが画面上の4つの方法のいずれかのファイルが(ユーザーの選択に応じて)UIImageViewのインスタンスをMYIMAGEに追加見ることができます。これは私が(3および4のための)右のファイルを選択していますことを証明します。

//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"

私は、この出力は解放のオブジェクトからのアクセス試行に由来し、そして私はに実行したり、他の状況でこの問題を解決したことを認識しています。しかし、たとえ私のメモリ割り当てをcountercheckingした後、まだここではない方法を発見した。

私は、この問題を解決する方法を本当に感謝しています。

役に立ちましたか?

解決

iPhone OSは、別のフォルダを作成していた "/民間の/ var /モバイル/メディア/ DCIM / 101APPLE /" デフォルト100APPLE異なります。

私は102APPLEなど、実際には、時には写真もフォルダ999APPLEに保存されていることに気づいたこれは、削除、コピーやカメラロール内の写真を作成する方法によって異なります。

だからあなたのカメラロールの写真は、実際には、多くの異なるフォルダに保存することができます。

したがって、[NSData dataWithContentsOfFile:ImagePath];を実行することができない、それは例外をスロー:

"EXC_BAD_ACCESS"

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top