哪个图片控件可以放远程的图片
比如 wwww.xxxx.xx/图片 图片控件可以显示出该连接的图片
比如 wwww.xxxx.xx/图片 图片控件可以显示出该连接的图片
解决方案 »
- 使用TWindowsMediaPlayer时,窗口释放内存出错
- delphi 中的 canvas 如何设置 将要保存的bmp文件为黑白 颜色
- 单机瘦数据库中DataSetProvider.ApplyUpdates出错问题!
- 今天还有人在吗?编辑时出现“ File not found: 'DBGridEh.dcu'”!
- 运行期动态创建的控件事件问题:
- 很简单的问题,在线等待!
- 关于日期间隔的计算!
- 高手进!
- 户口问题——严重提问!!!
- DELPHI 如何控制鼠标移动到某一坐标?
- 我想删除指定文件夹下所有的文件,请问代码怎么写?
- 我在一个单线程理用了个ADOQuery,向sql数据库插入很多数据,现在有2个问题
{在网络中传送BMP流和JPG流的速度没测试过}
{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;
}{JPG流 uses jpeg
jpgstream:= TJPEGImage.Create;
jpgstream.Assign(image.picture.bitmap);
jpgstream.CompressionQuality:=50; {压缩质量}
jpgstream.Compress;
jpgstream.SaveToStream(memoryStream);{保存为JPG流}
jpgstream.free;
}ReleaseDC(0,ss.Handle);
image.free;{发送内存流...}-----------------------------------------------------
{接收内存流...}{使用BMP流
image.Picture.Bitmap.LoadFromStream(bmpStream);}{还原压缩的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流 image.Picture.Assign(jpgstream);
2. TIdHTTP 和 TImage 进行组合使用。
//TImage 直接从流中直接读取图片的方法总是没有办法成功
//下面是保存到本地后再显示的笨方法
//知道怎样不用直接保存到本地的方法的兄弟,谢谢共享一下方法
procedure TForm1.Button1Click(Sender: TObject);
var
sStream: TMemoryStream;
begin
Image1.AutoSize := True;
IdHTTP1.HandleRedirects := True;
IdHTTP1.ReadTimeout := 30000;
sStream := TMemoryStream.Create;
try
IdHTTP1.Get('http://profile.csdn.net/liyinwei/picture/2.jpg',sStream);
sStream.SaveToFile('c:\2.jpg');
Image1.Picture.LoadFromFile('c:\2.jpg');
ShowMessage('成功');
except
ShowMessage('错误');
end;
sStream.Free;
end;
就好像人为什么不能飞一样,因为没有翅膀。