티스토리 뷰

반응형
이번에는 이미지를 어플에서 다시 사용할 수 있도록 저장하는 방법에 대해 정리해 보도록 하겠습니다. 

아이폰에 데이터를 파일시스템에 저장하는 방법은 크게 4가지가 있습니다. 
Property List, Object Archive, SQLite3, 그리고 코어 데이터라는 것이 있는데요.
이 중에서 SQLite3를 사용하는 방법을 간략하게 살펴보면서 UIImage를 저장하고 불러오는 것을 설명하고자 합니다. 

SQLite3를 사용하기 위해서는 libsqlite3.dylib라는 이름의 동적 라이브러리 파일을 링크시켜야 합니다. 
"Groups & Files"의 "Framework"를 선택하고 Project 메뉴의 [Add to Project..]을 클릭합니다. 
그리고 시뮬레이터를 사용할 경우, 다음 파일을 추가합니다. 
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.3.sdk/user/lib 하위에 libsqlite3.dylib가 존재합니다. 

물론 디바이스로 테스트 할 경우에는 iPhoneSimulator.platform 대신 iPhoneOS.platform을 선택하시면 됩니다. 

실제 SQLite3를 사용하는 방법은 기본적으로 책에 다 설명 되어 있으니 직접 찾아보시도록 하시구. 
여기에서는 이미지를 Blob 형태로 저장하는 것만 설명하도록 할께요

먼저 테이블을 다음과 같이 생성합니다. 필드의 타입을 Blob으로 지정하면 이미지를 저장할 수 있습니다. 
아래 소스에 보면 MINI_IMAGE를 BLOB으로 선언한 것을 볼 수 있습니다.
참고로 여기에서 database 변수는 sqlite3 *database로 선언된 것입니다. 

updateImage라는 메소드를 만들어서 이미지를 저장하는 소스는 다음과 같습니다.
(테이블 생성과 달리 SQL문을 char *로 선언해봤습니다. 이게 NSString 보다 변환이 없어 빠르다고는 하더라구요)

소스를 보시면 알겠지만 그리 어렵지 않습니다. 
UIImagePNGRepresentation 함수를 이용해서 UIImage 타입인 backgroundImage를 NSData로 변환합니다. 
그리고 나서 sqlite3_bind_blob을 사용해 저장하는 겁니다. 

참고로 헤더 파일에 UIImage *backgroundImage를 선언한 상태입니다. 
즉, 다른 곳에서 backgroundImage에 저장할 이미지를 지정하고 
[self updateImage]와 같이 호출하면 해당 이미지를 데이터베이스에 저장하는 구조입니다. 

마지막으로 저장된 이미지 데이터를 가져오는 소스를 살펴보면 다음과 같습니다. 
저장할 때와 반대로 가져온 데이터를 NSData로 변경하고 이것을 UIImage로 바꿔서
backgroundImage에 할당하는 겁니다. 

어플 개발시 이미지를 저장해야 할 때가 간혹 있을 수 있을 듯 합니다.
이럴때 사용할 수 있는 간단한 방법을 정리해 봤습니다. 

반응형
댓글
댓글쓰기 폼