사진촬영 어플을 제작하다 보면 가끔 중간과정의 사진을 확인 할 일이 종종 생긴다.
이미지뷰를 만들어서 띄어서 봐도 되겠지만, jpg로 보는 것이 편하기에...
또한 jpg로 변환하면 제대로 나오고 NSData 자체를 출력하면 이상하게 넘어가는 경우가 많다.
이를 위해 raw파일로 저장하는 법도 같이 적는다.
1. jpg 저장
//jpg로 저장
NSString *jpgPath = [NSTemporaryDirectory()
stringByAppendingPathComponent:@"originalImage.jpg"];
[UIImageJPEGRepresentation(_originalImage, 1.0) writeToFile:jpgPath atomically:YES];
빨간색으로 적은 부분이 jpg로 저장될 이미지 명
파란색으로 적은 부분이 UIImage가 들어갈 곳이다.
2. raw로 저장
//raw로 저장
int x = [[NSString stringWithFormat:@"%f", _originalImage.size.width] intValue]; //이미지 가로
int y = [[NSString stringWithFormat:@"%f", _originalImage.size.height] intValue]; //이미지 세로
NSData* pixelData = (__bridge_transfer NSData*) CGDataProviderCopyData(CGImageGetDataProvider(_originalImage.CGImage)); //이미지를 NSData로 변환
unsigned char* pixelBytes = (unsigned char *)[pixelData bytes]; //이미지의 byte수
NSString* originalPath = [NSTemporaryDirectory()
stringByAppendingPathComponent:@"original_Image.raw"]; //이미지가 저장될 이름
const char* path = [originalPath UTF8String]; //UTF8로 변환 char는 UTF-8사용
char tempPath[1024]; //문자배열 1024공간
sprintf (tempPath, "%s_%d_%d.raw", path, x, y); //이 부분은 관련 정보를 파일명에 같이 출력하기 위해서임
FILE* fp = fopen (tempPath, "wb"); //파일 오픈
if (0 != fp) //파일이 존재하는 경우
{
fwrite (pixelBytes, 1, 4 * x * y, fp); //해당 경로에 파일 저장, 4를 곱하는 이유는 RGBA 레드, 그린, 블루, 알파(투명값)
fclose (fp); //파일 닫음
}
빨간색으로 적은 부분이 raw로 저장될 이미지 명
파란색으로 적은 부분이 UIImage가 들어갈 곳이다.
이진화된 데이터는 infranViewer를 통해 볼 수 있다.
'프로그래밍 > iOS' 카테고리의 다른 글
[ios] Delegate사용 법 (0) | 2015.04.08 |
---|---|
[ios] 기기의 가로, 세로 사이즈 가져오기(ios8 수정) (0) | 2015.04.08 |
[ios] non-arc환경으로 작성된 코드 적용하기, 반대의 경우도 (0) | 2015.04.08 |
[ios] Orientation (0) | 2015.04.08 |
[ios] AVCaptureSession에서 flash, focus 다루기 (0) | 2015.04.08 |