buffer_compress 함수 설명
buffer_compress
함수는 버퍼의 일부(또는 전체)를 zlib 압축을 사용하여 압축하고, 압축된 데이터를 포함하는 새로운 버퍼를 반환합니다. 이 함수는 압축할 버퍼, 버퍼 내에서 사용할 오프셋(바이트 단위), 압축할 버퍼 데이터의 크기(바이트 단위)를 입력으로 받습니다. 함수가 성공적으로 실행되면 압축된 버퍼를 새로운 버퍼로 반환하고, 실패할 경우 -1을 반환합니다. 이 함수는 원래의 버퍼를 변경하지 않습니다.
문법
buffer_compress(buffer, offset, size);
인수 설명
인수 | 타입 | 설명 |
---|---|---|
buffer | Buffer | 압축할 버퍼 |
offset | Real | 압축할 버퍼 내의 오프셋(바이트 단위) |
size | Real | 압축할 버퍼 영역의 크기(바이트 단위) |
반환 값
- 압축된 버퍼
- 오류 발생 시 -1
예제
var _srcBuff = buffer_create(1024, buffer_grow, 1);
buffer_write(_srcBuff, global.DataString);
var _cmpBuff = buffer_compress(_srcBuff, 0, buffer_tell(_srcBuff));
buffer_save(_cmpBuff, "Player_Save.sav");
buffer_delete(_srcBuff);
buffer_delete(_cmpBuff);
위의 코드는 버퍼를 생성한 후 문자열의 데이터를 채웁니다. 그런 다음 이 버퍼를 압축하고 저장하며, 원본 및 압축된 버퍼를 삭제합니다.
활용 예제
예제 1: 이미지 데이터 압축
var _imageBuff = buffer_create(image_width * image_height * 4, buffer_grow, 1);
buffer_write(_imageBuff, image_get_data(my_image));
var _compressedImageBuff = buffer_compress(_imageBuff, 0, buffer_tell(_imageBuff));
buffer_save(_compressedImageBuff, "Compressed_Image.dat");
buffer_delete(_imageBuff);
buffer_delete(_compressedImageBuff);
예제 2: 게임 설정 저장
var _settingsBuff = buffer_create(256, buffer_grow, 1);
buffer_write(_settingsBuff, global.GameSettings);
var _compressedSettingsBuff = buffer_compress(_settingsBuff, 0, buffer_tell(_settingsBuff));
buffer_save(_compressedSettingsBuff, "Game_Settings.sav");
buffer_delete(_settingsBuff);
buffer_delete(_compressedSettingsBuff);
예제 3: 네트워크 데이터 전송
var _networkBuff = buffer_create(512, buffer_grow, 1);
buffer_write(_networkBuff, global.NetworkData);
var _compressedNetworkBuff = buffer_compress(_networkBuff, 0, buffer_tell(_networkBuff));
network_send(_compressedNetworkBuff);
buffer_delete(_networkBuff);
buffer_delete(_compressedNetworkBuff);
이러한 예제들은 buffer_compress
함수를 다양한 상황에서 활용하는 방법을 보여줍니다.