2014-10-03 3 views
-1

나는 압축 된 이미지를 메모리로 읽어 들이기 위해 먼저 압축을 풀어야하고 원래 크기가 할당되어야한다는 것을 읽었다. 따라서 압축이 풀리기 전에 크기가 압축되어 메모리에 할당되기 때문에 압축 된 이미지의 해상도가 원래의 소프트웨어와 동일하지 않은 특정 소프트웨어에서 볼 때 왜 그렇습니까?압축 해제가 품질을 유지하지 않는 이유는 무엇입니까?

+3

"* 특정 소프트웨어로 본 압축 된 이미지의 해상도가 원본과 같지 않은 이유는 무엇입니까?" "... 어디에서 그 동작을 관찰 했습니까? 또한이 질문은 게임 개발과 관련이 없습니다. – bummzack

답변

2

기술적으로 압축 된 이미지를 압축하면 압축 된 이미지의 품질이 유지됩니다. 그러나 을 압축하면 이미지가 품질을 떨어 뜨릴 수 있습니다 (즉, 압축 된 이미지가 원본 이미지에서 약간 저하됩니다).

이미지의 특정 변경 사항은 적용 할 압축 종류에 따라 다릅니다. 즉, 이미지의 해상도 나 크기를 변경시키는 압축에 익숙하지 않습니다. 그럴 권리가 있니?

+0

"... 이미지의 해상도 나 크기를 변경하는 압축에 익숙하지 않습니다."그렇다면 왜 압축이 사용됩니까? –

+0

이미지의 파일 크기를 줄이려면. 압축 된 것은 이미지 크기가 아닌 파일 크기입니다. – jhocking

6

압축이란 이미지의 해상도 또는 픽셀 크기를 줄이는 것이 아닙니다. 압축이란 특정 이미지를 나타내는 데 필요한 바이트 수를 줄이는 것입니다.

이미지는 각 픽셀에 대해 하나씩 4 바이트 구조의 배열로 볼 수 있습니다. 각 바이트는 각 픽셀의 색상 즉 빨강, 녹색, 파랑 및 알파의 구성 요소 중 하나를 나타냅니다. 이 제도로 이미지를 표현하기 위해 필요한 크기는

width * height * 4 

는 그래서 100 × 100 픽셀의 이미지가 10,000 픽셀을 것이다, 따라서 40,000 바이트를 소비한다. 이것은 실제로 BMP 형식이 이미지를 저장하는 방식입니다.

그러나 이것만으로 10000 픽셀을 표현할 수있는 유일한 방법은 아닙니다. 예를 들어 첫 번째 5000 픽셀이 파란색이고 아래쪽 픽셀이 갈색 인 경우 "파란색 : 5000, 갈색 5000"과 같은 말을 사용하여 이미지를 나타낼 수 있습니다. 이는 훨씬 적은 바이트로 나타낼 수 있습니다. 이 구성표는 대략 RLE (Run Length Encoding)의 작동 방식이며 GIF과 같이 다양한 형식으로 널리 사용됩니다.

그러나 이미지의 바이트를 나타내는 데 필요한 바이트 수를 줄이기 위해 할 수있는 일은 많습니다. 데이터가 더 적은 수의 바이트로 표현하는 것이 항상 쉬운 것은 아니므로 JPEG 파일에서 사용되는 것과 같은 일부 압축 알고리즘은 픽셀을 조금만 수정하면 데이터를 훨씬 쉽게 압축 할 수 있지만 변경 사항은 그렇지 않습니다. 매우 눈에니다. 이러한 변경이 허용되는 경우 이미지를 압축 할 때 인상적인 결과를 얻을 수 있습니다. 이것이 "손실 압축"입니다.

이미지 압축의 전체적인 포인트는 이미지를 디스크에 저장하거나 인터넷을 통해 전송하여 이미지를 한 위치에서 다른 위치로 쉽게 이동하는 것입니다. 그러나 이미지를 표시하려면 컴퓨터가 각 픽셀에 어떤 색을 가져야하는지 모니터에 알려야하므로 일단 이미지를 표시하면 압축을 풀어야합니다.

+0

손실 압축은 주어진 압축률을 강제하는 유일한 방법입니다 (예 : "이미지를 100KiB보다 작게 만들"). – Medinoc

관련 문제