본문 바로가기

JPEG 헤더 구조 JPEG header structure JPEG, JPG는 손실 압축된 파일이다. 불필요한 픽셀들을 제거하는 방식으로 좋은 화질을 유지하며 큰 압축 효과를 얻지만 원본과는 어느정도 차이가 발생한다. 아래 설명에서 JFIF( JPEG File Interchange Format)는 JPEG 인코딩을 준수하는 파일을 JIF(JPEG Interchange Format)로 변환하기 위한 format이다. JFIF는 JFIF Marker들과 JFIF Marker Segment들로 구성된다.(Segment없이 Marker만 독립적으로 있기도 함.) 우선 파일의 전체적인 틀은 다음과 같다. JFIF file structure Segment Code Description SOI FF D8 Start Of Image를 의..
Adaptive Huffman coding Adaptive Huffman Coding ( Dynamic Huffman Coindg )http://ben-tanen.com/adaptive-huffman/
LZ77 알고리즘 LZ77 알고리즘 (LZ77 Encoding): LZ77알고리즘은 사전 방식 ( Dictionary methods )을 채택한다. 즉, 반복적으로 나오는 문자열을 압축한다. zip, gzip, pkzip 등에서 사용되는 압축 알고리즘이다.다른 알고리즘과 결합되어 deflate 방식 등으로 사용된다. Pseudo-Code 는 다음과 같다.1 begin2 fill view from input3 while (view not empty) do4 begin5 find longest prefix p of view starting in coded part6 i = position of p in window7 j = length of p8 x = first char after p in view9 output( i , ..
Deflate 알고리즘 Deflate 알고리즘: zip, gzip 등의 프로그램에서 압축방식으로 사용하는 알고리즘. Deflate 알고리즘은 LZ77 알고리즘과 허프만 부호화 알고리즘이 결합된 압축방식이다. 그림으로 설명하면 다음과 같다. 1. Data가 있다. 2. 먼저 LZ77알고리즘을 통해 압축하여 LLD블럭들이 나온다. 3. 이 LLD들을 가지고 허프만 부호화 알고리즘을 거친다. 4. deflate 압축 완료.
파이썬 Crc32 계산 [ 파이썬 Crc32 계산하기 (ZIP Archive) ] 파이썬 전 플랫폼 가능. binascii 모듈의 crc32() 함수를 이용하므로, import binascii 해주자. "ZIP 포맷의 Crc-32 계산을 위한 함수"로, 다른 경우에는 적합하지 않다.( Crc-32 with magic number 'debb20e3'(little endian) ) 1. 일반적 사용법import binascii crc =binascii.crc32(b"nightohl")print('crc32 = {:#010x}'.format(crc))==> crc32 = 0x4c2810b2 2. 2개 이상의 조각의 Crc-32 구하기import binasciicrc = binascii.crc32(b"night") crc = bina..
파이썬3 타입 확인, 검사 하는 방법 [파이썬 타입 확인, 검사 하는 방법] type() 함수를 이용하면 된다. 단순히 타입을 확인하고자 하는 경우에는 type() 결과를 print()로 호출하면 된다.a = 1print( type( a ) ) 타입을 검사하고자 한다면 반환 결과를 str로 만들어 문자열로 검사를 하면 된다.a = 1if ( str( type( a ) ) == "" ): print("Integer !")
파이썬3 현재 커서 위치 반환 [ 파이썬3 파일 입출력 현재 커서 위치 반환 ] tell() 내장함수 사용. with open("test.txt", "rb+") as f:f.read(4)print( f.tell() ) f.seek(20)print( f.tell() ) => 결과 : 4, 20
파이썬3 바이너리 값 편집 [파이썬3 바이너리 값 편집][ Python3 기준 ] 파일의 바이너리 값을 편집하고자 한다.ex) 파일의 Data 길이를 나타내는 Header 값을 수정하고자 하는 경우! 파이썬 3에서는 참 편리한 함수를 제공하여 편집이 용이하다. 우선 파일을 바이너리 모드로 열어준다. (b 추가) 바이너리 모드이므로 여기서 read() 함수를 호출하면 type : 으로 읽힌다.bytes 타입으로 산술연산을 할 수 없으므로 int로 변환시켜 계산한다.int.from_bytes(bytes, byteorder, signed=) 함수를 사용하자. bytes bytes-like-object 또는 iterable producing bytes가 들어가야한다. byteorder endian 방식을 표기하는데, 'big' or 'l..