摘要载入中…    请稍等…












内容载入中…    请稍等…

如长时间看不到内容,请关闭浏览器,重新打开此页!

芯友首页 应用软件 编程开发 网络硬件 资源下载 动漫音乐 精美图库 芯友论坛 视频教程 电脑技术QQ群:72845454
 ★★photoshop学友-史上最强播放器★★
 位置:编程开发>Deiphi>Deiphi实例教程
◎→ 本类最新
在DELPHI中用线程排序
在Delphi中使用Queued Component
作非常规程序菜单掌握delphi
执行一个外部程序并等待它的完成
在应用程序中跟踪MOUSE的坐标
五子棋源代码
显示密码的原理
◎→相关资源
C语言入门视频教程
C#编程WinForm入门视频
Asp.net入门视频教程下载
VC++编程视频教程下载
VB窗体文章
HTML入门教程
Deiphi实例教程
Deiphi窗体文章
Deiphi数据库编程
Deiphi网络编程
Deiphi图形图象文章
Deiphi系统文件
◎→ 热门资源
Delphi数据压缩处理(2)
图解Delphi 8 Eco 开发实战
用Delphi编写后台监控软件
用Delphi获取Windows及系统路径
用Delphi实现24位真彩色图标
用Delphi实现24位真彩色图标(2)
用Delphi实现24位真彩色图标(1)

Delphi数据压缩处理(1)


日期:2008-10-20 22:11:19    来源:
   
 ·Delphi数据压缩处理(2) ·Delphi数据库编程一日通(3)
 ·MSSQL压缩数据库 ·Photoshop照片处理好帮手:外挂滤镜55mm-14

Delphi数据压缩处理
  Borland公司推出的 RAD开发工具 Delphi 5.0作为 Windows平台上的主流开发工具,其可视化的开发环境和面向对象编程的强大功能已经吸引了无数的开发人员。但是,一些程序员在实际的开发过程中却时常为对大量的数据进行压缩而伤透脑筋,不得不去查找一些高效的压缩算法或在网上查找第三方的控件来实现压缩。难道 Delphi本身没有提供这个功能吗?其实 Delphi的程序设计师早就考虑到了这一点,他们提供了 Zlib.pas和 Zlibconst.pas两个单元文件来解决数据压缩问题,实现了很高的数据压缩比率。这两个文件保存在 Delphi 5.0安装光盘上 \Info\Extras\Zlib目录下,此外,在 Info\Extras\Zlib\Obj目录中还保存了 Zlib.pas单元引用的 Obj文件。下面本文以压缩一个屏幕拷贝为例介绍如何使用这项功能。

  解决思路

  首先利用屏幕拷贝捕捉到当前整个屏幕的图像,然后在内存中保存为 BMP文件格式。压缩时,使用 TCompressionStream对象对原始图像进行压缩并且保存为自定义的文件格式;解压缩时,使用 TDecompressionStream对象对被压缩的图像进行解压缩,还原为 BMP格式的图像文件。

  具体实现

  新建一个项目文件,在主单元的接口部分引用 Zlib.pas,在主表单上放置两个按钮 Button1、 Button2,在它们的 OnClick事件中写上相应的过程调用代码。

  部分程序源代码如下:

  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);

     file://图像为 24位真彩色,也可根据实际需要调整

     Bmp.PixelFormat := pf24bit;

     Bmp.Width := MyRect.Right;

     Bmp.Height := MyRect.Bottom;

     file://捕捉整个屏幕图像

     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

     file://获得图像流的原始尺寸

     Count := CompressedStream.Size;

     DestStream := TMemoryStream.Create;

     SourceStream:=TCompressionStream.Create

     (CompressionLevel, DestStream);

     Try

      file://SourceStream中保存着原始的图像流

      CompressedStream.SaveToStream(SourceStream);

      file://将原始图像流进行压缩, DestStream中保存着压缩后的图像流

      SourceStream.Free;

      CompressedStream.Clear;

      file://写入原始图像的尺寸

      CompressedStream.WriteBuffer(Count, SizeOf

      (Count));

      file://写入经过压缩的图像流

      CompressedStream.CopyFrom(DestStream, 0);

      finally

      DestStream.Free;

     end;

    end;

三层交换技术 交换机与路由器密码恢复 交换机的选购 路由器设置专题 路由故障处理手  [1]

图解Delphi 8 Eco 开发实战

Delphi数据库编程一日通(2)

创建Zip压缩文件夹

Photoshop照片处理好帮手:外挂滤镜55mm-13

--->腾讯QQ IP数据库 2007.05.13┊附带IP数据维护工具V1.1┊珊瑚虫精简绿色特别版
--->腾讯QQ IP数据库 2007.05.06┊附带IP数据维护工具V1.1┊珊瑚虫精简绿色特别版
--->QQ IP数据库 2006.6.13 珊瑚虫精简版
--->Web Downloader V1.0.8.00┊可处理所有的因特网下载文件任务┊英文绿色免费版
--->CIH破坏的硬盘数据修复工具
Tags:  Delphi 数据 压缩 处理

芯友网版权所有 1999-2006 | 著作权与商标声明 | 法律声明 | 服务条款 | 隐私声明 | 联系我们