Procesamiento de compresión de datos de Delphi (2)
Tampón: PChar;
Conteo: Entero;
Comenzar
file://Leer el tamaño de la imagen original del flujo de imágenes comprimidas
ComPRessedStream.ReadBuffer(Conteo, TamañoDe(Conteo));
file://Asignar bloques de memoria para que la secuencia de imágenes original se lea según el tamaño de la imagen
GetMem(Buffer, Conde);
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(CompressedStream);
Intentar
file://descomprime el flujo de imágenes comprimidas y lo almacena en el bloque de memoria intermedia
SourceStream.ReadBuffer(Buffer^, Conde);
file://guarde la secuencia de imágenes original en la secuencia DestStream
DestStream.WriteBuffer(Buffer^, Conde);
DestStream.Position := 0;//Restablecer puntero de flujo
//Carga la secuencia de imágenes original desde la secuencia DestStream
Bmp.LoadFromStream(DestStream);
finalmente
FreeMem(búfer);
DestStream.Gratis;
fin;
fin;
4. Evento OnClick del botón de compresión
procedimiento TForm1.Button1Click (Remitente: TObject);
var
Bmp: TBitmap;
Corriente comprimida: TMemoryStream;
comenzar
Bmp := TBitmap.Create;
CompressedStream := TMemoryStream.Create;
Intentar
file://Capture toda la pantalla actual y guarde la imagen en el objeto Bmp GetScreen(Bmp);
file:// guarda la imagen en el objeto Bmp en el flujo de memoria
Bmp.SaveToStream(CompressedStream);
file://Comprime la secuencia de imágenes original según la relación de compresión predeterminada
CompressBitmap(CompressedStream, clDefault);
file://Guarde el flujo de imágenes comprimidas como un archivo en un formato personalizado
CompressedStream.SaveToFile('C:cj.dat');
finalmente
Bmp.Gratis;
CompressedStream.Gratis;
fin;
fin;
5. Evento OnClick del botón descomprimir
procedimiento TForm1.Button2Click (Remitente: TObject);
var
Corriente comprimida: TFileStream;
Bmp: TBitmap;
comenzar
Bmp := TBitmap.Create;
file://abre un archivo de formato comprimido personalizado en modo de solo lectura de la secuencia de archivos
CompressedStream := TFileStream.Create(' C:cj.dat' , fmOpenRead);
Intentar
file://descomprime el flujo de imágenes comprimidas
UnCompressBitmap(CompressedStream, Bmp);
file://Restaurar la secuencia de imágenes original al archivo BMP especificado
Bmp.SaveToFile('C:cj.bmp');
finalmente
Bmp.Gratis;
CompressedStream.Gratis;
fin;
fin;
Además, el objeto TCompressionStream también proporciona la propiedad CompressionRate, que se utiliza para describir la relación de compresión después de comprimir los datos originales. El evento OnProgress se activa durante los procesos de compresión y descompresión. Los desarrolladores pueden escribir en este evento para mostrar el código. .
El código anterior pasa la depuración y la ejecución en Delphi 5.0.