2024-01-30
- image
- dev
- optimization
Device Pixel Ratio(DPR)에 대해서
우리가 웹개발에서 픽셀을 얘기할 때는 보통 2가지로 정의할 수 있다.
- CSS Pixel
- 웹에서(코드에서) 사용하는 추상적인 개념의 픽셀단위
- 디스플레이 종류(일반, 레티나) 상관없이 동일한 크기를 유지
- Device Pixel (물리적 픽셀)
- 물리적 디스플레이 기기에서 색을 표현할 수 있는 가장 작은 단위.
- 디스플레이의 밀도에 따라 크기가 달라짐
DPR은 디바이스 픽셀과 CSS픽셀 사이의 비율을 나타낸다. DPR값이 커질수록 실제 디스플레이는 더 작고 촘촘한 물리적 픽셀로 이루어진다. 이는 사용자가 디스플레이를 보는 거리와도 관련이 있다. 모바일 디바이스의 경우 얼굴 가까이 에서 화면을 보기 때문에 작은 화면에서도 세밀한 디테일을 구분할 수 있도록 더 높은 DPR이 필요하고 반면에 TV, 모니터일 경우 그보다 멀리서 보기 때문에 DPR이 낮아도 적당히 선명하게 보이며 보통 DPR 1을 가지고 있다. (사용자에게 가까울수록 밀도가 높아지고 멀어질수록 밀도도 낮아진다.)
최근 출시된 아이폰 15 pro의 스펙을 알아보면 다음과 같다.
Viewport Size: 430px × 932px
Screen Size: 1290px × 2796px
뷰포트 사이즈는 CSS Pixel을 의미하고 스크린 사이즈는 물리적 픽셀인 Device Pixel을 의미하다. 스크린 사이즈가 뷰포트의 3배이므로 아이폰 15 pro는 DPR이 3이 된다.
비트맵 이미지(예: PNG, JPG, GIF 등)는 물리적 픽셀의 해상도에 따라 다르게 표시되고, Device Pixel Ratio(DPR)와 밀접하게 연결되어 있다.
DPR이 1인 화면에서는 이미지의 픽셀 크기도 그대로 유지된다. 예를 들어, 1000px
너비의 이미지는 1,000개의 물리적 픽셀을 사용하여 표시된다. 그러나 DPR이 2인 디스플레이에서는 동일한 이미지가 실제로는 500px
너비로 줄어든다. 이는 각 CSS 픽셀이 실제로 2x2
물리적 픽셀로 표현되기 때문이다.
DPR이 높은 디스플레이에서는 더 많은 물리적 픽셀이 하나의 CSS 픽셀을 형성하기 때문에, 동일한 크기의 비트맵 이미지는 더 작게 표시된다. 이는 이미지가 뷰포트의 100%를 차지하도록 스타일링되었을 때 중요한 문제가 될 수 있다. 예를 들어, DPR이 2인 디스플레이에서는 원본 이미지 크기의 두 배에 해당하는 해상도가 필요하여 이미지가 선명하게 표시되도록 해야 한다. 그렇지 않으면 이미지가 흐릿하거나 픽셀화되어 보일 수 있다.