문제

제가 만들고있는 앱은 업로드 이미지를 4 가지 (네 번째는 테스트 함수) 방식으로 작성합니다.

1. 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. 사진 라이브러리에서 사용하여 사용합니다

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와 동일)과 함께 촬영 한 이미지를 사용하지만 UIIMAGEPICKERCONTROLLER 대신 imagePath를 사용하여 UIIMAGEPICKERCONTROLLERSOURCETYPHOTOLIBRARY.

//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 인스턴스에 추가 된 화면의 네 가지 방법 중 하나를 볼 수 있습니다 (사용자 선택에 따라 다름). 이것은 올바른 파일 (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 개의 작업이 없다는 것입니다.

콘솔 출력; 프로그램 수신 신호 : "exc_bad_access"

나는이 출력이 릴리스 된 객체의 접근 시도에서 비롯된 것을 알고 있으며, 다른 상황 에서이 문제를 해결하고 해결했습니다. 그러나 메모리 할당을 확인한 후에도 아직 여기서는 아무런 방법이 없습니다.

이 문제를 해결하는 방법에 감사드립니다.

도움이 되었습니까?

해결책

iPhone OS는 기본 100Apple과 다른 다른 폴더 "/private/var/mobile/media/dcim/101apple/"를 만들었습니다.

실제로 사진이 폴더 999apple, 102apple 등에 저장되는 경우가 있다는 것을 깨달았습니다. 이것은 카메라 롤에서 사진을 삭제, 복사 및 만드는 방법에 따라 다릅니다.

따라서 카메라 롤 사진은 실제로 여러 폴더에 저장 될 수 있습니다.

따라서 실행할 수 없습니다 [NSData dataWithContentsOfFile:ImagePath];, 그것은 예외를 던진다 :

"exc_bad_access"

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top