델파이 데이터 압축 처리 (2)
버퍼: PChar;
개수: 정수;
시작하다
file://압축된 이미지 스트림에서 원본 이미지 크기를 읽습니다.
ComPRessedStream.ReadBuffer(Count, SizeOf(Count));
file://이미지 크기에 따라 읽을 원본 이미지 스트림에 대한 메모리 블록을 할당합니다.
GetMem(버퍼, 개수);
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(CompressedStream);
노력하다
file://은 압축된 이미지 스트림의 압축을 풀어 버퍼 메모리 블록에 저장합니다.
SourceStream.ReadBuffer(버퍼^, 개수);
file://원본 이미지 스트림을 DestStream 스트림에 저장합니다.
DestStream.WriteBuffer(Buffer^, Count);
DestStream.Position := 0;//스트림 포인터 재설정
//DestStream 스트림에서 원본 이미지 스트림을 로드합니다.
Bmp.LoadFromStream(DestStream);
마지막으로
FreeMem(버퍼);
DestStream.Free;
끝;
끝;
4. 압축 버튼 OnClick 이벤트
절차 TForm1.Button1Click(Sender: TObject);
var
Bmp: TBitmap;
압축스트림: TMemoryStream;
시작하다
Bmp := TBitmap.Create;
CompressedStream := TMemoryStream.Create;
노력하다
file://현재 화면 전체를 캡처하고 이미지를 Bmp 개체에 저장합니다 GetScreen(Bmp);
file://은 Bmp 객체의 이미지를 메모리 스트림에 저장합니다.
Bmp.SaveToStream(압축스트림);
file://기본 압축 비율에 따라 원본 이미지 스트림을 압축합니다.
CompressBitmap(CompressedStream, clDefault);
file://압축된 이미지 스트림을 사용자 정의 형식의 파일로 저장합니다.
CompressedStream.SaveToFile(' C:cj.dat' );
마지막으로
Bmp.Free;
압축스트림.무료;
끝;
끝;
5. 압축해제 버튼 OnClick 이벤트
절차 TForm1.Button2Click(Sender: TObject);
var
압축스트림: TFileStream;
Bmp: TBitmap;
시작하다
Bmp := TBitmap.Create;
file://파일 스트림의 읽기 전용 모드에서 사용자 정의 압축 형식 파일을 엽니다.
CompressedStream := TFileStream.Create(' C:cj.dat' , fmOpenRead);
노력하다
file://압축된 이미지 스트림을 압축 해제합니다.
UnCompressBitmap(압축스트림, Bmp);
file://원본 이미지 스트림을 지정된 BMP 파일로 복원합니다.
Bmp.SaveToFile(' C:cj.bmp' );
마지막으로
Bmp.Free;
압축스트림.무료;
끝;
끝;
또한 TCompressionStream 객체는 원본 데이터를 압축한 후 압축 비율을 설명하는 데 사용되는 CompressionRate 속성도 제공합니다. 개발자는 압축 및 압축 해제 프로세스 중에 이 이벤트를 작성하여 진행률 코드를 표시할 수 있습니다. .
위의 코드는 Delphi 5.0에서 디버깅 및 실행을 통과합니다.