UIImageView가있는보기가 있습니다. jpg 또는 png 이미지 형식으로로드되었습니다. jpg 이미지 버전의 데이터 크기가 100k입니다. 그런 다음 NSKeyedArchiver를 사용하여 내 뷰를 파일에 저장했습니다. 파일 크기는 약 3MB가됩니다. 이미지의 png 버전을 사용하면 아카이브 된 파일은 여전히 약 3MB입니다.로드 된 이미지가 포함 된 UIImageView가 포함 된 NSKeyedArchiver 파일 압축하기
그런 다음 zlib을 사용하여 아카이브 된 파일을 압축했습니다. 그러나 많은 효과가있는 것 같지 않습니다.
가능한 한 100k 영역을 닫으려고 다시 할 수있는 것은 무엇입니까?
BTW : UIWebView를 사용하여 이미지를로드 한 다음 이미지의 jpg 버전을 사용하면 보관 된 파일이 원본 jpg에 매우 가깝게 표시됩니다.
편집 : 매트의 대답은 나에게 아이디어를 준, 그래서 이것은 내가하고 결국 무엇 이었는가 :
참고 : 내 나는 arleady에 대한 NSData
을 유지하기 위해 바르 만들기 UIImageView에
- 의 서브 클래스를 사용 이미지
encodeWithCoder
에 전화하기 전에[super encodeWithCoder...]
으로 전화하십시오.self.image = nil
; 이미지를 복원 할NSData
바르를 사용하여initWithCoder
1.
에서 확인 인코딩에게 NSData
IVAR을 1
NSData
를 사용하여 이미지 데이터에 self.image
를 설정합니다.
3MB 이유는 압축되지 않은 *이기 때문에 의심의 여지가 없습니다. 소스 파일이 무엇인지는 중요하지 않습니다. 'UIImage'는 비트 맵 만 이해할 수 있으므로 저장하게됩니다. 매트가 말했듯이, 왜 이것을해야합니까? – borrrden
이 경우 NSKeyedArchiver를 사용해야합니다. 하지만 내 편집을 참조하십시오. – user523234