Delphi資料壓縮處理(2) (轉)
Delphi資料壓縮處理(2) (轉)[@more@]
Buffer: PChar;
Count: Integer;
Begin
file://從被壓縮的影像流中讀出原始影像的尺寸
CompressedStream.Reauffer(Count, SizeOf(Count));
file://根據影像尺寸大小為將要讀入的原始影像流分配塊
GetMem(Buffer, Count);
DestStream := TMemoryStream.Create;
Stream := TDecompressionStream.Create(CompressedStream);
Try
file://將被壓縮的影像流解壓縮,然後存入 Buffer記憶體塊中
SourceStream.ReadBuffer(Buffer^, Count);
file://將原始影像流儲存至 DestStream流中
DestStream.WriteBuffer(Buffer^, Count);
DestStream.Position := 0;//復位流指標
//從 DestStream流中載入原始影像流
Bmp.LoadFromStream(DestStream);
finally
FreeMem(Buffer);
DestStream.Free;
end;
end;
4.壓縮按鈕 OnClick事件
procedure TForm1.Button1Click(Sender: T);
var
Bmp: TBitmap;
CompressedStream: TMemoryStream;
begin
Bmp := TBitmap.Create;
CompressedStream := TMemoryStream.Create;
Try
file://捕獲當前整個螢幕 ,將影像儲存至 Bmp中 GetScreen(Bmp);
file://將 Bmp物件中的影像儲存至記憶體流中
Bmp.SaveToStream(CompressedStream);
file://按預設的壓縮比例對原始影像流進行壓縮
CompressBitmap(CompressedStream, clDefault);
file://將壓縮之後的影像流儲存為自定義格式的
CompressedStream.SaveToFile(‘ C:cj.dat’ );
finally
Bmp.Free;
CompressedStream.Free;
end;
end;
5.解壓縮按鈕 OnClick事件
procedure TForm1.Button2Click(Sender: TObject);
var
CompressedStream: TFileStream;
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
file://以檔案流的只讀方式開啟自定義的壓縮格式檔案
CompressedStream := TFileStream.Create(‘ C:cj.dat’ , fmOpenRead);
Try
file://將被壓縮的影像流進行解壓縮
UnCompressBitmap(CompressedStream, Bmp);
file://將原始影像流還原為指定的 BMP檔案
Bmp.SaveToFile(‘ C:cj.bmp’ );
finally
Bmp.Free;
CompressedStream.Free;
end;
end;
此外 TCompressionStream物件還提供了 CompressionRate屬性,該屬性用於描述對原始資料進行壓縮後的壓縮比率,而 OnProgress事件在壓縮與解壓縮過程中都會被觸發,開發人員可以在該事件中編寫用於顯示進度的程式碼。
以上程式碼在 Delphi 5.0中執行透過。
資料處理(2)
Buffer: PChar;
Count: Integer;
Begin
file://從被壓縮的影像流中讀出原始影像的尺寸
CompressedStream.Reauffer(Count, SizeOf(Count));
file://根據影像尺寸大小為將要讀入的原始影像流分配塊
GetMem(Buffer, Count);
DestStream := TMemoryStream.Create;
Stream := TDecompressionStream.Create(CompressedStream);
Try
file://將被壓縮的影像流解壓縮,然後存入 Buffer記憶體塊中
SourceStream.ReadBuffer(Buffer^, Count);
file://將原始影像流儲存至 DestStream流中
DestStream.WriteBuffer(Buffer^, Count);
DestStream.Position := 0;//復位流指標
//從 DestStream流中載入原始影像流
Bmp.LoadFromStream(DestStream);
finally
FreeMem(Buffer);
DestStream.Free;
end;
end;
4.壓縮按鈕 OnClick事件
procedure TForm1.Button1Click(Sender: T);
var
Bmp: TBitmap;
CompressedStream: TMemoryStream;
begin
Bmp := TBitmap.Create;
CompressedStream := TMemoryStream.Create;
Try
file://捕獲當前整個螢幕 ,將影像儲存至 Bmp中 GetScreen(Bmp);
file://將 Bmp物件中的影像儲存至記憶體流中
Bmp.SaveToStream(CompressedStream);
file://按預設的壓縮比例對原始影像流進行壓縮
CompressBitmap(CompressedStream, clDefault);
file://將壓縮之後的影像流儲存為自定義格式的
CompressedStream.SaveToFile(‘ C:cj.dat’ );
finally
Bmp.Free;
CompressedStream.Free;
end;
end;
5.解壓縮按鈕 OnClick事件
procedure TForm1.Button2Click(Sender: TObject);
var
CompressedStream: TFileStream;
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
file://以檔案流的只讀方式開啟自定義的壓縮格式檔案
CompressedStream := TFileStream.Create(‘ C:cj.dat’ , fmOpenRead);
Try
file://將被壓縮的影像流進行解壓縮
UnCompressBitmap(CompressedStream, Bmp);
file://將原始影像流還原為指定的 BMP檔案
Bmp.SaveToFile(‘ C:cj.bmp’ );
finally
Bmp.Free;
CompressedStream.Free;
end;
end;
此外 TCompressionStream物件還提供了 CompressionRate屬性,該屬性用於描述對原始資料進行壓縮後的壓縮比率,而 OnProgress事件在壓縮與解壓縮過程中都會被觸發,開發人員可以在該事件中編寫用於顯示進度的程式碼。
以上程式碼在 Delphi 5.0中執行透過。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990236/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Delphi資料壓縮處理(1) (轉)
- 批處理壓縮
- Delphi處理JSON格式資料JSON
- ffmpeg-圖片壓縮旋轉等處理
- 資料壓縮簡史 (轉)
- Gulp壓縮報錯處理
- 解包 bzip2 壓縮的壓縮文件(轉)
- zip壓縮檔案處理方案(Zip4j壓縮和解壓)
- java中 檔案壓縮處理Java
- VB環境下壓縮資料流播放技術(2) (轉)
- .Net Core HttpClient處理響應壓縮HTTPclient
- Oracle資料壓縮Oracle
- web前端實現圖片壓縮處理Web前端
- SpringBoot-檔案壓縮處理Spring Boot
- 海量資料處理2
- Oracle壓縮黑科技(二)—壓縮資料的修改Oracle
- Teradata資料壓縮
- 海量資料處理 (轉)
- 一次性將多個資料夾批處理壓縮成多個.rar
- 解決了幾乎所有Delphi+Access同仁的問題—動態建立、壓縮Access資料庫(*.MDB) (轉)資料庫
- 批處理 壓縮zip 並過濾部分檔案
- 有手就會的 Java 處理壓縮檔案Java
- 資料處理及跳轉
- 在Delphi中處理資料庫日期型欄位的顯示與輸入 (轉)資料庫
- 用Delphi處理公曆到農曆的轉換 (轉)
- linux壓縮(解壓縮)命令詳解-轉Linux
- 利用Java實現zip壓縮/解壓縮 (轉)Java
- Linux下壓縮,解壓縮RAR包(轉)Linux
- linux 下壓縮與解壓資料夾Linux
- Java實現壓縮資料夾Java
- 資料庫壓縮技術探索資料庫
- 利用 canvas 實現資料壓縮Canvas
- FreeBSD資料處理方式(轉)
- 怎麼把資料夾壓縮成壓縮包發給微信好友
- 11g 資料庫rman壓縮備份壓縮率測試資料庫
- Delphi處理TWebBrowser的Close事件Web事件
- DB2_行壓縮DB2
- IBM收購實時資料壓縮廠商Storwize(轉)IBM