zlib 예제

아래 예제에서는 “logo.png”라는 PNG 이미지 파일을 압축합니다 (이 버전은 이미 원본 원시 이미지의 압축 버전입니다). 위의 프로그램은 압축 된 “Hello world”문자열을 포함하는 이전 예제에서 만든 파일 “compressed.dat”을 엽니다. 압축된 데이터는 나중에 사용할 수 있도록 파일에 저장할 수도 있습니다. 아래 예제에서는 압축 된 텍스트를 파일에 저장하는 방법을 보여 주며 압축 및 압축 해제 함수 외에도 zlib에는 데이터 체크섬을 계산하는 두 가지 함수인 adler32() 및 crc32()가 포함되어 있습니다. 두 체크섬모두 암호화되어 안전하지 않으며 데이터 무결성 확인에만 사용할 수 있습니다. 압축() 함수를 사용하여 파일의 데이터를 압축할 수도 있습니다. 구문은 첫 번째 예제와 동일합니다. (선택 사항)을 선택합니다. 이 모듈은 “zlib” 압축을 지원합니다. (이 압축 방법은 “수축”이라고도 합니다.) 이 예제와 첫 번째 예제의 유일한 차이점은 데이터의 원본입니다. 그러나 ASCII 문자열이든 이진 이미지 데이터이든 압축할 수 있는 데이터의 종류를 파악할 수 있도록 표시하는 것이 중요하다고 생각합니다. 평소와 같이 파일에서 데이터를 읽고 압축 메서드를 호출하기만 하면 됩니다. zlib는 여러 가지 압축 레벨을 지원하므로 계산 비용과 공간 절감 양 간의 균형을 맞출 수 있습니다.

기본 압축 수준인 zlib입니다. Z_DEFAULT_COMPRESSION는 -1이며 성능과 압축 결과 간에 손상되는 하드 코딩된 값에 해당합니다. 이는 현재 레벨 6에 해당합니다. zlib 라이브러리는 데이터 문자열을 압축하는 데 사용할 수있는 압축 기능을 제공합니다. 이 함수의 구문은 두 가지 인수만 을 취하는 매우 간단합니다: Python zlib 라이브러리는 DEFLATE 무손실 압축 알고리즘에 대한 상위 수준의 추상화인 zlib C 라이브러리에 파이썬 인터페이스를 제공합니다. 라이브러리에서 사용하는 데이터 형식은 RFC 1950에서 1952까지 지정되며 http://www.ietf.org/rfc/rfc1950.txt 사용할 수 있습니다. http://www.boost.org/doc/libs/1_48_0/libs/iostreams/doc/classes/zlib.html 이전 예제에서는 압축된 버전의 압축된 버전이 압축되지 않은 버전보다 클 수 있음을 보여 줍니다. 실제 결과는 입력 데이터에 따라 다르지만 작은 데이터 집합에 대한 압축 오버 헤드를 관찰하는 것이 흥미롭습니다hexdump -C를 통과한 예제의 출력은 다음과 같습니다. 그리고 출력 데이터를 보면 입력 문자열이 “압축”된 후에도 여전히 읽을 수 있음을 알 수 있습니다.

zlibcomplete 라이브러리를 사용하면 원시 포인터 조작을 수행할 필요가 없으므로 쉽게 사용할 수 있습니다. RAII(리소스 할당은 초기화)를 기반으로 하며, 이는 모든 동적 할당 및 할당 할당 이외에도 생성자에서 자동으로 발생한다는 것을 의미합니다.