티스토리 뷰

반응형

 

안녕하세요 :) Zedd입니다.

 

일단 제목에서 보실 수 있다시피..저 두 친구는

UIImage -> Data를 아주 간-단하게 해주는 메소드입니다.

 

pngData()

png / data

말 그대로 PNG포맷으로 지정된 이미지를 데이터로 바꿔주는 친구입니다.

이 친구는

데이터를 생성하는데 문제가 생겼다? -> nil

기본 CGImageRef에 지원되지 않는 비트 맵 형식의 데이터가 포함됐다? -> nil

을 리턴할 수 있습니다. 

 

jpegData(compressionQuality:)

이 친구도 말 그대로 JPEG 포맷으로 지정된 이미지를 데이터로 바꿔주는 친구입니다.

compressionQuality라는 파라미터를 받는데요, 말 그대로..압축 퀄리티..

0.0 ~ 1.0 사이의 값을 줄 수 있으며

0은 최대 압축(최저 품질)

1은 최소 압축(최고 품질)

을 나타냅니다. 

pngData와 마찬가지로 

데이터를 생성하는데 문제가 생겼다? -> nil

기본 CGImageRef에 지원되지 않는 비트 맵 형식의 데이터가 포함됐다? -> nil

을 리턴할 수 있습니다. 

 

제 문제는 

같은 이미지에 pngData()를 호출했을때와. jpegData(compressionQuality: ) 를 호출했을 때 데이터의 크기가 차이가 많이 난다는 점...

그냥 간단한 예제를 하나 만들어보겠습니다. 버튼을 누르면 카메라가 열리고...

카메라로 사진찍고..찍으면 그 이미지에 대해서 pngData() / jpegData(compressionQuality: ) 둘다 호출하기. 

죽여줘...

제 폰은 아주 살짝ㅎ 카메라가 꾸진편인데..위 사진에 대해서 

pngData()호출 시 : 19384819 bytes = 약 19.4MB

jpegData(compressionQuality: 1) 호출 시 : 4806499 bytes (심지어 최고품질) = 약 4MB

 

4배가 넘는 차이가 나네요.

그래서 찾아보았읍니다...

 

PNG -> 비손실 그래픽 파일 포맷

JPEG -> 이미지 압축시킬 때 일부 데이터를 날려버리는 손실 압축 기법 표준.

(이 JPEG 압축 기법을 사용하는 이미지들도 보통 JPEG 이미지라 불린다.)

 

와 JPEG는 "제이펙"으로 읽는거네요.....저는 그냥 PNG(피엔지..) 처럼 걍 읽었었는데.....

그리고 심지어 JPEG를 Joint Photographic Experts Group라는 단체에서 만들었는데

JPEG는 Joint Photographic Experts Group의 약자임

 

비손실이냐 손실이냐에서 데이터의 크기 차이가 나는거겠죠!?

너무 자명해서 더 할말이 없다...

지금 제 스펙으로 이미지 하나당 19MB씩이나 나오면 안되기때문에..

jpegData(compressionQuality: )쓰는걸로 합의..

 

반응형

'iOS' 카테고리의 다른 글

Line graph animation  (1) 2020.04.23
UIBezierPath (8) - line graph  (0) 2020.04.22
iOS ) UICollectionReusableView  (2) 2020.04.11
RxTest  (2) 2020.04.09
Core Data (2)  (5) 2020.04.08