線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2235
推到 Plurk!
推到 Facebook!

抓屏幕图像>保存为内存流--BMP流,压缩BMP流,JPG流

 
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-22 16:53:48 IP:61.155.xxx.xxx 未訂閱
{BMP流的压缩是无损压缩} { 全局变量 memoryStream:TMemoryStream; memoryStream:=TMemoryStream.create; } var image:Timage; jpgstream:TJPEGImage; ss:tcanvas; begin ss:=tcanvas.Create; ss.Handle:=getdc(0); image:=timage.Create(self); image.width:=Screen.width; image.Height:=screen.Height ; image.picture.bitmap.PixelFormat:= pf16bit; bitblt(image.canvas.handle,0,0,image.width,image.height,ss.handle,0,0,srccopy); {大大的BMP流 image.picture.bitmap.SaveToStream(memoryStream); } {无损压缩BMP流 //uses Zlib.pas //先定义变量count,DestStream,SourceStream image.picture.bitmap.SaveToStream(memoryStream); Count:=memoryStream.Size; DestStream:=TMemoryStream.Create; //压缩方式:clnone,clfastest,cldefault,clmax SourceStream:=TCompressionStream.Create(cldefault, DestStream); try memoryStream.SaveToStream(SourceStream); SourceStream.Free; memoryStream.Clear; memoryStream.WriteBuffer(Count, SizeOf(Count)); memoryStream.CopyFrom(DestStream, 0); finally DestStream.Free; end; } {还原BMP流 //uses Zlib.pas //先定义变量count,buffer,DestStream,SourceStream //memoryStream是压缩的BMP流 memoryStream.ReadBuffer(Count, SizeOf(Count)); GetMem(Buffer, Count); DestStream:=TMemoryStream.Create; SourceStream:=TDecompressionStream.Create(memoryStream); Try SourceStream.ReadBuffer(Buffer^, Count); DestStream.WriteBuffer(Buffer^, Count); DestStream.Position:=0; image.Picture.Bitmap.LoadFromStream(DestStream); finally FreeMem(Buffer); DestStream.Free; end; } {JPG流 //uses jpeg jpgstream:= TJPEGImage.Create; jpgstream.Assign(image.picture.bitmap); jpgstream.CompressionQuality:=50;//压缩质量 jpgstream.Compress; jpgstream.SaveToStream(memoryStream);//保存为JPG流 //使用JPG流 image.Picture.Assign(jpgstream); jpgstream.free; } ReleaseDC(0,ss.Handle); image.free; {发送内存流...} end; 风花雪月 e梦情缘
------
风花雪月 e梦情缘
joe_ung
一般會員


發表:12
回覆:21
積分:6
註冊:2003-10-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-05 12:03:13 IP:202.175.xxx.xxx 未訂閱
可否解釋一下上述的Source Code 呢 由於本人是一個新手來的 多謝
系統時間:2024-05-06 5:27:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!