idhttp + TImage 获取网页验证码

来源:互联网 发布:我赢职场java视频网盘 编辑:程序博客网 时间:2024/06/05 14:51

源于网络:

本人用的Delphi7,让我没有想到的是,它的TImage竟然不能显示GIF,但是我又要让它能显示,这个时候怎么办?

去网上找了很久,终于找到了TGIFImage的源码pas文件,就是那个广为流传的2.2版本,之所以选择源码文件pas,而不用dcu文件,是因为害怕Delphi的版本问题。

下面就开始它的应用。新建一个工程,菜单栏project-->Add to project-->选择GIFImage.pas-->打开,编译,是不是发现你的项目文件夹下面多了个dcu文件,好了,已经成果完成第 一步了,你可以将这个dcu和pas复制到Delphi的安装文件夹下的<lib>文件夹

在你的项目的开头interface部分中的uses中加入GIFImage,下面我们来看看一个TImage控件是怎么显示GIF的。
http://hi.baidu.com/spitcold/blog/item/7eaec93ad26da42d97ddd89e.html

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, StdCtrls, ImgList, ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    Button: TButton;
    IdHTTP: TIdHTTP;
    Image: TImage;
    btn1: TButton;
    procedure ButtonClick(Sender: TObject);
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ButtonClick(Sender: TObject);
  var
    url:string;
    ms:TMemoryStream;
    jpg: TJPEGImage;  //ctrl+鼠标左键单击,提示查找不到.jpg.pas单元文件,但可以正常编译运行。
begin
  url := 'http://captcha.qq.com/getimage?aid=15000701&0.9129723031485226';
  ms := TMemoryStream.Create;
  jpg := TJPEGImage.Create;
  IdHTTP.Get(url,ms);
  ms.Position := 0;
  jpg.LoadFromStream(ms);
  Image.Canvas.Draw(100,100,jpg);
  ms.Free;
  jpg.Free;
  {
  Timage控件不能显示gif图片;
  如果Url验证码图片为gif格式就会出错;
  可以使用 TGIFImage 代替; TGIFImage手动安装,不自带,非控件,pas单元;
  }
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  Image.Picture.LoadFromFile('F:/123.jpg'); //jpg格式正常;
  Image.Picture.LoadFromFile('F:/123.gif')l //gif格式就出错了;
end;

end.

原创粉丝点击