크롬 브라우저에서 작은 JPEG 이미지가 다른 브라우저와 다르게 보이는 현상은 렌더링 버그가 아닌, JPEG 디코딩 최적화 때문인 것으로 밝혀졌습니다. 개발자들은 종종 크롬에서 아이콘이나 로고 같은 작은 이미지가 다른 브라우저보다 두껍거나 원본과 다르게 보이는 것을 발견하곤 했는데, 이는 크롬이 이미지 크기를 줄일 때 사용하는 영리한 최적화 기법 때문입니다.
일반적으로 이미지를 작게 렌더링하려면 원본 이미지를 완전히 압축 해제한 다음 크기를 줄이는 방식이 사용됩니다. 하지만 2000x2000 픽셀의 큰 JPEG 이미지를 20x20 픽셀로 표시해야 할 경우, 완전히 압축 해제하면 약 12MB의 메모리가 필요하지만 최종 결과물은 1.2KB에 불과합니다. 이 과정에서 대부분의 고주파수 세부 정보(예: 나뭇잎의 미세한 질감)는 손실됩니다. 크롬은 이러한 비효율성을 줄이기 위해 libjpeg-turbo 라이브러리의 부분 역이산코사인변환(partial IDCT scaling) 기능을 활용합니다. 이 기술은 JPEG 압축 과정에서 8x8 블록으로 나뉘어 주파수 도메인으로 변환된 이미지 데이터 중, 저주파수 정보만 선택적으로 디코딩하여 메모리 사용량과 처리 속도를 최적화합니다.
즉, 크롬은 이미지를 매우 작게 표시할 때 모든 데이터를 디코딩하지 않고, 축소된 이미지에 필요한 저주파수 데이터만 사용합니다. 이로 인해 이미지의 가장자리 부드러움이나 미세한 그라데이션 같은 고주파수 정보가 생략되어, 아이콘처럼 선명한 디테일이 중요한 이미지에서는 원본보다 두껍거나 뭉개진 것처럼 보일 수 있습니다. 이러한 최적화는 사진과 같이 복잡한 색상 변화가 있는 이미지에는 효과적이지만, 아이콘처럼 단순하고 명확한 형태가 중요한 이미지에는 적합하지 않을 수 있습니다. 따라서 아이콘 등에는 JPEG 대신 SVG(Scalable Vector Graphics)와 같은 벡터 이미지를 사용하는 것이 좋습니다.