을 사용하여 UIImagePicker
사진을 찍거나 갤러리에서 사진을 선택할 수있는 앱 이 있습니다. 선택 및 표시는 지금까지 작동했지만 수행 할 작업과 다음 방법에 대한 지침이 필요합니다. 내 대리자 메서드는 다음과 같습니다.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
self.userImageView.image = chosenImage;
[picker dismissViewControllerAnimated:YES completion:NULL];
}
따라서 캡처 / 선택된 이미지는 UIImageView
.
그것을 저장하는 가장 좋은 방법은 무엇입니까? image
Core Data에 저장 URL
하시겠습니까 , 아니면 파일 시스템에 저장 하시겠습니까? 파일 시스템에서 URL을 어떻게 얻을 수 있습니까? 사용자가 사진을 찍거나 갤러리에서 선택하는 것이 중요합니까? 힌트, 아이디어 감사합니다.
Apple 문서에 따르면 : ( https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Articles/cdPerformance.html )
대형 데이터 개체 (BLOB)
응용 프로그램에서 큰 BLOB (이미지 및 사운드 데이터와 같은 "이진 큰 개체")를 사용하는 경우 오버 헤드를 최소화하도록주의해야합니다. "소형", "보통"및 "대형"의 정확한 정의는 유동적이며 응용 프로그램의 용도에 따라 다릅니다. 대략적인 규칙은 크기가 킬로바이트 정도 인 개체는 "적당한"크기이고 메가 바이트 정도 인 개체는 "대형"크기라는 것입니다. 일부 개발자는 데이터베이스에서 10MB BLOB로 우수한 성능을 달성했습니다. 반면에 애플리케이션의 테이블에 수백만 개의 행이있는 경우 128 바이트조차도 별도의 테이블로 정규화해야하는 "적당한"크기의 CLOB (Character Large OBject) 일 수 있습니다.
일반적으로 영구 저장소에 BLOB를 저장해야하는 경우 SQLite 저장소를 사용해야합니다. XML 및 이진 저장소는 전체 개체 그래프가 메모리에 있어야하며 저장소 쓰기는 원자 적 ( "영구 저장소 기능"참조)이므로 대용량 데이터 개체를 효율적으로 처리하지 못합니다. SQLite는 매우 큰 데이터베이스를 처리하도록 확장 할 수 있습니다. 적절하게 사용되는 SQLite는 최대 100GB의 데이터베이스에 대해 우수한 성능을 제공하며 단일 행은 최대 1GB를 저장할 수 있습니다 (물론 1GB의 데이터를 메모리로 읽는 것은 저장소의 효율성에 관계없이 비용이 많이 드는 작업입니다).
BLOB는 종종 엔티티의 속성을 나타냅니다. 예를 들어 사진은 Employee 엔티티의 속성 일 수 있습니다. 중소 규모의 BLOB (및 CLOB)의 경우 데이터에 대해 별도의 엔터티를 만들고 특성 대신 일대일 관계를 만들어야합니다. 예를 들어 Employee 및 Photograph 엔터티를 일대일 관계로 만들 수 있습니다. 여기서 Employee와 Photograph의 관계는 Employee의 사진 속성을 대체합니다. 이 패턴은 개체 오류의 이점을 극대화합니다 ( "오류 및 Uniquing"참조). 주어진 사진은 실제로 필요한 경우에만 검색됩니다 (관계가 순회되는 경우).
그러나 BLOB를 파일 시스템의 리소스로 저장할 수 있고 해당 리소스에 대한 링크 (예 : URL 또는 경로)를 유지할 수 있다면 더 좋습니다. 그런 다음 필요할 때 BLOB를로드 할 수 있습니다.
따라서 이미지의 크기에 따라 경로 또는 이미지를 CoreData에 저장할 수 있습니다.
UIImage를 저장하려면 NSData에서 변환해야합니다.
NSData imageData = UIImagePNGRepresentation (myImage); NSData imageData = UIImageJPEGRepresentation (myImage, QUALITY);
그런 다음 선택한 경로에 저장할 수 있습니다.
[imageData writeToFile : fullPath atomically : YES];
데이터 모델이 작동하는 방식에 대한 연속성을 유지하기 위해 작은 이미지라도 항상 경로를 사용하는 경향이 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다