나는 압축 된 이미지를 메모리로 읽어 들이기 위해 먼저 압축을 풀어야하고 원래 크기가 할당되어야한다는 것을 읽었다. 따라서 압축이 풀리기 전에 크기가 압축되어 메모리에 할당되기 때문에 압축 된 이미지의 해상도가 원래의 소프트웨어와 동일하지 않은 특정 소프트웨어에서 볼 때 왜 그렇습니까?압축 해제가 품질을 유지하지 않는 이유는 무엇입니까?
답변
기술적으로 압축 된 이미지를 압축하면 압축 된 이미지의 품질이 유지됩니다. 그러나 을 압축하면 이미지가 품질을 떨어 뜨릴 수 있습니다 (즉, 압축 된 이미지가 원본 이미지에서 약간 저하됩니다).
이미지의 특정 변경 사항은 적용 할 압축 종류에 따라 다릅니다. 즉, 이미지의 해상도 나 크기를 변경시키는 압축에 익숙하지 않습니다. 그럴 권리가 있니?
"... 이미지의 해상도 나 크기를 변경하는 압축에 익숙하지 않습니다."그렇다면 왜 압축이 사용됩니까? –
이미지의 파일 크기를 줄이려면. 압축 된 것은 이미지 크기가 아닌 파일 크기입니다. – jhocking
압축이란 이미지의 해상도 또는 픽셀 크기를 줄이는 것이 아닙니다. 압축이란 특정 이미지를 나타내는 데 필요한 바이트 수를 줄이는 것입니다.
이미지는 각 픽셀에 대해 하나씩 4 바이트 구조의 배열로 볼 수 있습니다. 각 바이트는 각 픽셀의 색상 즉 빨강, 녹색, 파랑 및 알파의 구성 요소 중 하나를 나타냅니다. 이 제도로 이미지를 표현하기 위해 필요한 크기는
width * height * 4
는 그래서 100 × 100 픽셀의 이미지가 10,000 픽셀을 것이다, 따라서 40,000 바이트를 소비한다. 이것은 실제로
BMP 형식이 이미지를 저장하는 방식입니다.
그러나 이것만으로 10000 픽셀을 표현할 수있는 유일한 방법은 아닙니다. 예를 들어 첫 번째 5000 픽셀이 파란색이고 아래쪽 픽셀이 갈색 인 경우 "파란색 : 5000, 갈색 5000"과 같은 말을 사용하여 이미지를 나타낼 수 있습니다. 이는 훨씬 적은 바이트로 나타낼 수 있습니다. 이 구성표는 대략 RLE (Run Length Encoding)의 작동 방식이며 GIF과 같이 다양한 형식으로 널리 사용됩니다.
그러나 이미지의 바이트를 나타내는 데 필요한 바이트 수를 줄이기 위해 할 수있는 일은 많습니다. 데이터가 더 적은 수의 바이트로 표현하는 것이 항상 쉬운 것은 아니므로 JPEG 파일에서 사용되는 것과 같은 일부 압축 알고리즘은 픽셀을 조금만 수정하면 데이터를 훨씬 쉽게 압축 할 수 있지만 변경 사항은 그렇지 않습니다. 매우 눈에니다. 이러한 변경이 허용되는 경우 이미지를 압축 할 때 인상적인 결과를 얻을 수 있습니다. 이것이 "손실 압축"입니다.
이미지 압축의 전체적인 포인트는 이미지를 디스크에 저장하거나 인터넷을 통해 전송하여 이미지를 한 위치에서 다른 위치로 쉽게 이동하는 것입니다. 그러나 이미지를 표시하려면 컴퓨터가 각 픽셀에 어떤 색을 가져야하는지 모니터에 알려야하므로 일단 이미지를 표시하면 압축을 풀어야합니다.
손실 압축은 주어진 압축률을 강제하는 유일한 방법입니다 (예 : "이미지를 100KiB보다 작게 만들"). – Medinoc
- 1. 파일 압축 해제가 정말 느립니다.
- 2. nsmutablearray 속성이 개체를 유지하지 않는 이유는 무엇입니까?
- 3. addSubview가 뷰를 유지하지 않는 이유는 무엇입니까?
- 4. IIOMetadata에서 이미지 압축 품질을 얻는 방법은 무엇입니까?
- 5. Zlib 압축 해제가 헤더 오류를 발생시킵니다 - Ruby
- 6. GitHub가 AsciiDoc에서 줄 바꿈을 유지하지 않는 이유는 무엇입니까?
- 7. initWithRootViewController가 전달되는 viewController 클래스를 유지하지 않는 이유는 무엇입니까?
- 8. JPanel이 색상을 변경하지 않고 그대로 유지하지 않는 이유는 무엇입니까?
- 9. weakproxy가 파이썬에서 항상 동등성을 유지하지 않는 이유는 무엇입니까?
- 10. HibernateTemplate.merge()가 예외없이 완료되지만 데이터를 유지하지 않는 이유는 무엇입니까?
- 11. HTML 클래스를 유지하지 않는 인라인
- 12. 텍스트를 유지하지 않는 AutoCompleteBox
- 13. C# Windows Store 앱에서 압축 해제가 완료 될 때까지 기다립니다.
- 14. CGContext 렌더링 유지하지 않는 선은
- 15. 압축 해제 클래스가 디렉토리를 만들지 않는 이유는 무엇입니까?
- 16. XamComboEditor가 선택을 유지하지 않는 XamDataGrid
- 17. 키를 유지하지 않는 키를 해결
- 18. RunJar가 jar 파일을 압축 해제하는 이유는 무엇입니까?
- 19. java의 압축 및 압축 해제가 다른 프로그래밍 언어에서 제대로 작동하지 않습니다.
- 20. 서비스 품질을 설정하는 방법은 무엇입니까?
- 21. 파일 링크 해제가
- 22. 자바 스크립트 변경 사항을 유지하지 않는 PHP
- 23. kineticjs - setImage - 그리기 전에 이미지 품질을 압축/축소합니다.
- 24. CGPathIsRect가 작동하지 않는 이유는 무엇입니까? CGPathContainsPoint가 작동하지 않는 이유는 무엇입니까?
- 25. flex에서 압축 파일 압축
- 26. Python zip - 인수를 압축 해제해야하는 이유는 무엇입니까?
- 27. 호스팅 회사에서 mod_deflate를 지원하지 않는 이유는 무엇입니까?
- 28. CSS가로드되지 않는 이유는 무엇입니까?
- 29. 인쇄되지 않는 이유는 무엇입니까?
- 30. 각도가로드되지 않는 이유는 무엇입니까?
"* 특정 소프트웨어로 본 압축 된 이미지의 해상도가 원본과 같지 않은 이유는 무엇입니까?" "... 어디에서 그 동작을 관찰 했습니까? 또한이 질문은 게임 개발과 관련이 없습니다. – bummzack