亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi的壓縮流與解壓流

2019-11-18 18:55:07
字體:
供稿:網(wǎng)友
Borland公司推出的 RAD開發(fā)工具 Delphi 5.0作為 Windows平臺上的主流開發(fā)工具,其可視化的開發(fā)環(huán)境和面向?qū)ο缶幊痰膹?qiáng)大功能已經(jīng)吸引了無數(shù)的開發(fā)人員。但是,一些程序員在實際的開發(fā)過程中卻時常為對大量的數(shù)據(jù)進(jìn)行壓縮而傷透腦筋,不得不去查找一些高效的壓縮算法或在網(wǎng)上查找第三方的控件來實現(xiàn)壓縮。難道 Delphi本身沒有提供這個功能嗎?其實 Delphi的程序設(shè)計師早就考慮到了這一點,他們提供了 Zlib.pas和 Zlibconst.pas兩個單元文件來解決數(shù)據(jù)壓縮問題,實現(xiàn)了很高的數(shù)據(jù)壓縮比率。這兩個文件保存在 Delphi 5.0安裝光盤上 InfoExtraslib目錄下,此外,在 InfoExtraslibObj目錄中還保存了 Zlib.pas單元引用的 Obj文件。下面本文以壓縮一個屏幕拷貝為例介紹如何使用這項功能。
解決思路
首先利用屏幕拷貝捕捉到當(dāng)前整個屏幕的圖像,然后在內(nèi)存中保存為 BMP文件格式。壓縮時,使用 TComPRessionStream對象對原始圖像進(jìn)行壓縮并且保存為自定義的文件格式;解壓縮時,使用 TDecompressionStream對象對被壓縮的圖像進(jìn)行解壓縮,還原為 BMP格式的圖像文件。
具體實現(xiàn)
新建一個項目文件,在主單元的接口部分引用 Zlib.pas,在主表單上放置兩個按鈕 Button1、 Button2,在它們的 OnClick事件中寫上相應(yīng)的過程調(diào)用代碼。
部分程序源代碼如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, Zlib;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$ R* .DFM}
1.捕捉全屏幕圖像
procedure GetScreen(var Bmp: TBitmap);
var
Dc: HDC;
MyCanvas: TCanvas;
MyRect: TRect;
begin
Dc := GetWindowDC(0);
MyCanvas := TCanvas.Create;
try
MyCanvas.Handle := Dc;
MyRect:=Rect(0, 0,Screen.Width, Screen.Height);
//圖像為 24位真彩色,也可根據(jù)實際需要調(diào)整
Bmp.PixelFormat := pf24bit;
Bmp.Width := MyRect.Right;
Bmp.Height := MyRect.Bottom;
//捕捉整個屏幕圖像
Bmp.Canvas.CopyRect(MyRect, MyCanvas, MyRect);
finally
MyCanvas.Handle := 0;
MyCanvas.Free;
ReleaseDC(0, Dc);
end;
end;
2.壓縮圖像
procedure CompressBitmap(var CompressedStream: TMemoryStream;const CompressionLevel: TCompressionLevel);
var
SourceStream: TCompressionStream;
DestStream: TMemoryStream;
Count: Integer;
Begin
//獲得圖像流的原始尺寸
Count := CompressedStream.Size;
DestStream := TMemoryStream.Create;
SourceStream:=TCompressionStream.Create
(CompressionLevel, DestStream);
Try
//SourceStream中保存著原始的圖像流
CompressedStream.SaveToStream(SourceStream);
//將原始圖像流進(jìn)行壓縮, DestStream中保存著壓縮后的圖像流
SourceStream.Free;
CompressedStream.Clear;
//寫入原始圖像的尺寸
CompressedStream.WriteBuffer(Count, SizeOf
(Count));
//寫入經(jīng)過壓縮的圖像流
CompressedStream.CopyFrom(DestStream, 0);
finally
DestStream.Free;
end;
end;
3.還原被壓縮圖像
procedure UnCompressBitmap(const CompressedStream: TFileStream; var Bmp: TBitmap);
var
SourceStream: TDecompressionStream;
DestStream: TMemoryStream;
Buffer: PChar;
Count: Integer;
Begin
//從被壓縮的圖像流中讀出原始圖像的尺寸
CompressedStream.ReadBuffer(Count, SizeOf(Count));
//根據(jù)圖像尺寸大小為將要讀入的原始圖像流分配內(nèi)存塊
GetMem(Buffer, Count);
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(CompressedStream);
Try
//將被壓縮的圖像流解壓縮,然后存入 Buffer內(nèi)存塊中
SourceStream.ReadBuffer(Buffer^, Count);
//將原始圖像流保存至 DestStream流中
DestStream.WriteBuffer(Buffer^, Count);
DestStream.Position := 0;//復(fù)位流指針
//從 DestStream流中載入原始圖像流
Bmp.LoadFromStream(DestStream);
finally
FreeMem(Buffer);
DestStream.Free;
end;
end;
4.壓縮按鈕 OnClick事件
procedure TForm1.Button1Click(Sender: TObject);
var
Bmp: TBitmap;
CompressedStream: TMemoryStream;
begin
Bmp := TBitmap.Create;
CompressedStream := TMemoryStream.Create;
Try
//捕獲當(dāng)前整個屏幕 ,將圖像保存至 Bmp對象中 GetScreen(Bmp);
//將 Bmp對象中的圖像保存至內(nèi)存流中
Bmp.SaveToStream(CompressedStream);
//按缺省的壓縮比例對原始圖像流進(jìn)行壓縮
CompressBitmap(CompressedStream, clDefault);
//將壓縮之后的圖像流保存為自定義格式的文件
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;
//以文件流的只讀方式打開自定義的壓縮格式文件
CompressedStream := TFileStream.Create(‘ C:cj.dat’ , fmOpenRead);
Try
//將被壓縮的圖像流進(jìn)行解壓縮
UnCompressBitmap(CompressedStream, Bmp);
//將原始圖像流還原為指定的 BMP文件
Bmp.SaveToFile(‘ C:cj.bmp’ );
finally
Bmp.Free;
CompressedStream.Free;
end;
end;
此外 TCompressionStream對象還提供了 CompressionRate屬性,該屬性用于描述對原始數(shù)據(jù)進(jìn)行壓縮后的壓縮比率,而 OnProgress事件在壓縮與解壓縮過程中都會被觸發(fā),開發(fā)人員可以在該事件中編寫用于顯示進(jìn)度的代碼。
以上代碼在 Delphi 5.0中調(diào)試運行通過。

上一篇:Delphi程序執(zhí)行時實時生成報表

下一篇:關(guān)于Delphi中預(yù)編譯指令的使用方法

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關(guān)注

99视频在线观看地址| 99久久精品无码一区二区毛片| 加勒比av在线播放| 亚洲精品字幕在线| 国产在线看一区| 妺妺窝人体色www看人体| 国产精品久久久久久久免费软件| 7777在线| 日本在线视频中文有码| 日韩欧美三级在线观看| 亚洲mv大片欧洲mv大片精品| 国模套图日韩精品一区二区| 久久久亚洲成人| 成人免费视频网站| 91在线观看一区二区| www激情五月| 老司机亚洲精品一区二区| 国产欧美精品一区二区三区介绍| 国产精品电影网站| youjizz.com在线观看| http;//www.99re视频| 日韩免费毛片视频| 97超碰在线资源站| 88久久精品无码一区二区毛片| 国产精品国产三级国产aⅴ中文| 欧美精品日韩一区| avtt香蕉久久| 99久久久久国产精品| 久久美女艺术照精彩视频福利播放| 3atv一区二区三区| 黑人巨大精品欧美一区二区一视频| 亚洲成人a**址| 日本一区二区在线观看视频| 18禁网站免费无遮挡无码中文| 久久亚洲精精品中文字幕| 这里只有精品99re| 日韩av不卡一区| 日韩欧美一区二区三区不卡视频| 日本精品久久久久中文字幕| av有声小说一区二区三区| 免费在线一区二区| 无码成人精品区在线观看| 蜜桃视频在线观看播放| 国产日韩欧美在线观看| 国产精品久久久久久免费| 无码人妻丰满熟妇精品区| 波多野结衣在线aⅴ中文字幕不卡| 欧美日韩国产探花| 一区二区三区美女| 99在线热播精品免费| 一道本在线观看| 天天干天天操天天做| 9i精品福利一区二区三区| 日韩国产高清污视频在线观看| 粉嫩欧美一区二区三区高清影视| caoporn-草棚在线视频最| av无码精品一区二区三区| 九九久久国产| 成人国产精品一区二区| 污导航在线观看| 国产精品久久久久9999小说| wwwxxx亚洲| t66y最新发布地址| 日韩亚洲国产中文字幕欧美| 久久综合在线观看| 黄色片网站免费在线观看| 国产精品videosex极品| 亚洲高清久久久| 欧美极品第一页| 91蜜桃视频在线观看| 久久久久久久久久99| av成人免费在线| 久久精品亚洲牛牛影视| 日日夜夜天天综合入口| 亚洲视频高清| 99热国内精品永久免费观看| 成人妇女免费播放久久久| 欧美体内she精高潮| 国产欧美日韩精品一区二区免费| 日韩精品视频免费| 国产成人精品a视频一区| 国产女人18毛片水真多18精品| 欧美电影精品一区二区| 亚洲va欧美va在线观看| 国产一二三四在线视频| 91精品啪在线观看国产60岁| 成人在线观看免费完整| www国产精品| 免费成人在线观看av| 在线免费观看不卡av| 国产美女三级无套内谢| 国产日韩精品在线看| 国产欧美一区二区精品性色| www.久久久久| 亚洲插插视频| 91涩漫在线观看| 老司机凹凸av亚洲导航| 国产精选在线观看91| www.热久久| 亚洲精品一区二区二区| 在线看日韩欧美| 精品一二三四区| 蜜桃一区二区三区四区| 调教一区二区| 啪啪免费视频一区| 国产又黄又猛又爽| 国产视频一二三| 亚洲18私人小影院| 亚洲国产精品va在看黑人| 亚洲精品中文字幕在线观看| 免费毛片在线不卡| 真实国产乱子伦对白在线| 日韩欧美不卡| 久久久久久无码精品人妻一区二区| av毛片在线免费观看| 蜜臀va亚洲va欧美va天堂| 亚洲福利视频导航| 色一情一乱一乱一区91| 天堂资源在线亚洲视频| 欧美日韩黄色网| 92国产精品| 亚洲国产精品人久久电影| 麻豆传媒在线播放| 亚洲中文字幕在线观看| 亚洲黄色小视频在线观看| 国产福利第一视频在线播放| 一本之道久久| 欧美日韩一区二区在线观看| 一本色道久久综合亚洲精品婷婷| 国产免费视频| 亚洲激情一二三区| 视频一区二区精品的福利| 亚洲成色777777在线观看影院| 芒果视频成人app| 一区二区在线视频观看| 久热视线观看免费视频| 国产极品一区二区| 久久综合九色| 亚洲精品久久久北条麻妃| 午夜国产福利一区二区| 国产精品人人做人人爽人人添| 国产色爱av资源综合区| 91成人在线观看喷潮教学| 久久亚洲美女| 国产亚洲精品中文字幕| 激情内射人妻1区2区3区| 性chinese极品按摩| 欧美午夜电影一区| 亚洲欧美日本视频在线观看| 亚洲精品无码专区在线播放| 欧美性猛交xxxx乱大交极品| 欧美一卡2卡3卡4卡| 国产精品99久久久久久有的能看| 在线能看的av网站| 欧美性感一区二区三区| 夜夜摸视频网| 另类尿喷潮videofree| 青青久久av| 中文字幕一区二区日韩精品绯色| 欧美揉bbbbb揉bbbbb| 国产日韩欧美亚洲一区| 日韩三级av| 五月激情六月综合| 欧美 日韩 激情| 国产精品久久777777| 在线观看日批视频| 久久人人97超碰精品888| 奇米视频7777| 伊人色综合一区二区三区影院视频| 91精品国产欧美日韩| 欧美va在线观看| 日韩成人高清在线| 成人免费毛片aaaaa**| 午夜精品成人在线视频| 日韩高清第一页| 国产精品精品一区二区三区午夜版| 亚洲精品女人| 国产精品久久国产精品| 青草视频在线观看视频| 欧美激情无毛| 原纱央莉成人av片| 国内精品视频| 亚洲欧美视频在线观看视频| 久久久久亚洲av无码专区| 日韩精彩视频| 亚洲毛片在线免费观看| 国产精品无码av在线播放| 亚洲免费成人av| 欧美做受喷浆在线观看| 黄色国产网站在线观看| 成人www视频在线观看| 永久免费av网站| 欧美精品一区二区视频| 综合激情网...| 日本一区二区在线看| 日韩大片欧美大片| 在线观看亚洲大片短视频| avtt天堂在线| 欧美—级高清免费播放| 中文字幕乱码一区二区| 国产亚洲精品中文字幕| 一区二区三区成人在线视频| 日韩毛片无码永久免费看| www.夜夜骑.com| 亚洲专区第一页| 伊人成年综合电影网| 久久精品欧美日韩| 久久久久久久久国产一区| 亚洲精品一线| av在线一区二区| 四虎永久在线精品无码视频| 第一页在线视频| 美女免费视频网站| 日韩欧美中文| 日韩免费视频一区| av亚洲男人天堂| 91香蕉视频在线播放| 中文字幕一区二区在线观看| 久久精品一区蜜桃臀影院| 深夜福利网址| 精品久久一区| 9a蜜桃久久久久久免费| 麻豆影视在线播放| 欧美黄在线观看| 电影天堂爱爱爱爱| 精品人妻一区二区三区日产乱码| 成年人二级毛片| 亚洲国产精品三区| 日本黄色小网站| 日韩综合第一页| 日本一区二区免费高清视频| 欧美高清在线观看| 91精品国产综合久久香蕉922| 成人羞羞网站入口免费| 老湿机69福利| 国产理论视频在线观看| 黄色网战入口| 黄网址在线永久免费观看| 精品久久久无码人妻字幂| 亚洲精品视频二区| 国产伦精品一区二区三区四区免费| 国产精品一区电影| 国产一区视频导航| 欧美亚洲一区二区三区| 欧美变态另类刺激| 蜜臀久久精品久久久用户群体| 波多野结衣影院| 夜鲁很鲁在线视频| 国产成人精品免费看在线播放| 亚洲夜晚福利在线观看| 国产精品一区二区三区久久久| 好吊色一区二区| 亚洲精品视频网上网址在线观看| 国产色视频一区二区三区qq号| 五月天天在线| 中文字幕欧美精品日韩中文字幕| 国产一级网站视频在线| 99在线视频精品| 亚洲视频成人| 国产又粗又猛又爽又黄的网站| 91免费看国产| 91在线视频播放| 在线观看电影av| 欧美狂欢多p性派对| 韩国三级在线一区| 国产精品臀控福利在线观看| 国产激情视频在线看| 亚洲一区二区免费在线观看| 成人免费在线观看av| 国产成人精品一区二区在线小狼| 久草中文视频| 欧美精品一级片| 久久精品亚洲精品国产欧美| 热久久天天拍国产| 国产精品久久综合av爱欲tv| 久久视频精品在线| 视频一区二区三区在线看免费看| 国产午夜精品视频免费不卡69堂| 亚洲男人都懂的网站| 精品96久久久久久中文字幕无| av动漫在线观看| 精品不卡一区二区| 国产美女精品免费电影| 欧美性猛交99久久久久99按摩| 国产精品a成v人在线播放| 在线观看国产成人av片| 日韩精品一区二区三区外面| 国产chinesehd精品露脸| 日韩精品在线观看av| heyzo高清国产精品| 成人欧美日韩| 91精品一区二区三区久久久久久| 欧美一级二级三级乱码| 免费在线观看的黄色网址| 日本一区二区三区在线视频| 欧美亚洲精品在线观看| 亚洲精品无码专区| 中文字幕jux大岛优香| 软萌小仙自慰喷白浆| 国产精品a久久久久| 欧美亚洲视频| 亚洲国产91| 中文字幕第五页| 久草视频这里只有精品| 日本美女视频网站| 国产精品1000| 国产精品自偷自拍| 亚洲欧美欧美一区二区三区| 中文字幕免费观看一区| 国产精品久久99| 爱情电影社保片一区| 亚洲影院在线看| 国产欧美中文在线| 国产精品原创| 天使と恶魔の榨精在线播放| 二区视频在线| 久久久久无码精品国产sm果冻| 内射中出日韩无国产剧情| 日韩欧美二区| 久久综合久久八八| 91青青国产在线观看精品| 国产一区二区三区成人| 亚洲欧美在线x视频| 在线黄色免费看| 少妇丰满尤物大尺度写真| 日韩伦理电影网站| 国产美女主播在线播放| 99国产视频|