怎么获取网站上的图片,然后直接显示在image上
如何获取网站上的图片,然后直接显示在image上?
远程网站上有个png文件,我用http下载到这个图片的数据,然后保存到硬盘上,再用image载入这个图片,可以正常显示
但是我将数据直接写入tmemorystream,然后用image.pic.loadfromstream(stream)则显示图片文件不对,请问应该如何处理?
------解决方案--------------------
用TImage显示网页http://www.52design.com/pic/200711/20071121134625905.png的PNG图片
新建工程、双击窗体、将下列代码覆盖你的 unit1:
远程网站上有个png文件,我用http下载到这个图片的数据,然后保存到硬盘上,再用image载入这个图片,可以正常显示
但是我将数据直接写入tmemorystream,然后用image.pic.loadfromstream(stream)则显示图片文件不对,请问应该如何处理?
------解决方案--------------------
用TImage显示网页http://www.52design.com/pic/200711/20071121134625905.png的PNG图片
新建工程、双击窗体、将下列代码覆盖你的 unit1:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses IdHTTP, ExtCtrls, pngimage;//PNGImage v1.43 可从http://www.delphifans.com/softview/softview_507.html下载,无需安装。
var Image:TImage;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var ms:TMemoryStream;
Png: TPngObject;
IdHTTP:TIdHTTP;
begin
Caption:='显示网页的PNG____中国软件研发联盟QQ群122058606. 广州佬';
AutoSize:=true; //让窗体自适应图片的尺寸
OnCloseQuery:=FormCloseQuery;//关联退出的事件
IdHTTP:=TIdHTTP.Create(self);
try
ms:=TMemoryStream.Create;//建立内存流
try
IdHTTP.Get('http://www.52design.com/pic/200711/20071121134625905.png', ms);//将网页的PNG加载到流
ms.Position:=0;//将指针移到开始位置。 切记莫忘!!!
Png:=TPngObject.Create;
try
Png.LoadFromStream(ms);//将流加载到 TPngObject
Image:=TImage.Create(self);
try
Image.Picture.Assign(Png);//将图复制到 TImage
Image.Parent:=self; //指定TImage的宿主
Image.AutoSize:=true; //自适应尺寸
except
FreeAndNil(Image);
end;
finally
Png.Free;
end;
finally
ms.Free;
end;
finally
IdHTTP.Free;
end;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Image<>nil then FreeAndNil(Image);
end;
end.