如何获取网站上的图片,然后直接显示在image上?
远程网站上有个png文件,我用http下载到这个图片的数据,然后保存到硬盘上,再用image载入这个图片,可以正常显示
但是我将数据直接写入tmemorystream,然后用image.pic.loadfromstream(stream)则显示图片文件不对,请问应该如何处理?
[解决办法]
用TImage显示网页http://www.52design.com/pic/200711/20071121134625905.png的PNG图片
新建工程、双击窗体、将下列代码覆盖你的 unit1:
unit Unit1;interfaceuses 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;implementationuses 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.