10

0xff의 시작 :아이폰 OS UIImageJPEGRepresentation 오류 : 아니 JPEG 파일 : 나는이 같은 내 응용 프로그램의 문서 디렉토리에 .jpg 파일을 쓰고 있어요 0xd9

NSData *img = UIImageJPEGRepresentation(myUIImage, 1.0); 
BOOL retValue = [img writeToFile:myFilePath atomically:YES]; 

나중에 내가 사용하여있는 UIImage로 다시 그 이미지를로드 :

UIImage *myImage = [UIImage imageWithContentsOfFile:path]; 

테이블 셀에 이미지를 그릴 수 있기 때문에 효과가 있다는 것은 잘 알고 있습니다. 지금은 UIImageJPEGRepresentation (myimage을, 1.0), 밖으로 디버거 인쇄이 라인을 사용하려고하면 :

<Error>: Not a JPEG file: starts with 0xff 0xd9 
<Error>: Application transferred too few scanlines 

을 그리고 함수는 전무를 반환합니다. 왜 이런 일이 일어날 지 아무도 모른다. 로드 된 후에 UIImage 데이터를 조작하는 데 아무 것도하지 않았습니다. 방금 UIImage를 셀의 이미지 뷰에 제공했습니다. 셀의 모든 이미지가 정렬되어 같은 크기 인 이미지 뷰 속성을 설정했지만 UIImage를 NSData로 변환 할 수있는 것과 관련이 없다고 생각합니다.

+0

UIImage *myImage = [UIImage imageWithContentsOfFile:path]; 

을 변경하여 오류 메시지를 제거 할 수 있었다 : 당신이 1.0 이상 * 다른 * 값으로 설정 압축 값이 시도 두 통화 (예 : 0.5?). – lxt

+0

이미지가 손상되었습니다. JPEG 이미지는 0xFF 0xD9로 끝나야합니다. 'myImage'는 어떻게 구성하고 있습니까? –

+0

앱에서 생성 한 jpeg를 여기 링크 할 수 있습니까? –

답변

20

이미지가 손상되지 않았으므로 이미지를 올바르게 표시 할 수있었습니다. 이 문제는 UIImage의 버그 일 수도 있습니다. 또는 imageWithContentsOfFile :에 대한 문서가 더 명확해야합니다.

나는 그냥 관심 밖으로

NSData *img = [NSData dataWithContentsOfFile:path]; 
UIImage *photo = [UIImage imageWithData:img]; 
+0

데이터와 파일의 차이점에 대한 의문을 확인해 주셔서 감사합니다. – SuperGuyAbe