PDA

View Full Version : fast load JPG



mathswt
02-04-2005, 11:41
procedure TForm1.Button1.Click(Sender: TObject);
var stream: TStream;
JPEGImage: TJPEGImage;
begin
i:=0;
JPEGImage:= TJPEGImage.Create;
repeat
IdTCPClient1.SendCmd('next');//gởi 1 lệnh đến idTCPServer
stream := TMemoryStream.Create;
try
IdTCPClient1.ReadStream(stream);//đọc vào Stream dữ liệu chứa data của 1 JPgImage gởi từ idTCPServer1
Stream.position:=0;
//--------------------------
JPEGImage.LoadFromStream(Stream);//lưu dữ liệu từ Stream vào JPEGImage
//--------------------------
Image1.Picture.Graphic:=JPEGImage; //load JPEGImage
Image1.Update;
finally
stream.Free;
end;
until check;
end;

Với đoạn code trên, Image1 sẽ hiển thị 1 Picture gởi từ idTCPServer1 nhưng tốc độ load ảnh Image1.Picture.Graphic:=JPEGImage;
với 1 ảnh 800x600 pixels không được nhanh lắm --> các ảnh hiển thị nhìn không được liên tục lằm.
Điều mình muốn hỏi là có cách nào để load ảnh nhanh hơn & ít tốn tài nguyên máy hơn không (có thể không cần sử dụng đối tượng Image1).

THE LAST LEAF
02-04-2005, 12:56
Dùng thêm một đối tượng TJpegImage là tốn tài nguyên rồi, chỉ cần như vầy

TJpegImage(Image1.Picture.Graphic).LoadFromStream( Stream);

mathswt
02-04-2005, 22:19
TJpegImage(Image1.Picture.Graphic).LoadFromStream( Stream);
--> compile thì OK nhưng báo lỗi lúc runtime.
Ý mình chỉ cần load nhanh là được.

jiSh@n
03-04-2005, 14:39
Tốc độ load 1 ảnh thì rất nhanh, nhưng nếu load nhiều ảnh liên tục (giống như movie stream) thì bạn ko nên dùng TCP, nên dùng UDP để đạt tốc độ nhanh hơn.

THE LAST LEAF
04-04-2005, 16:42
Đây ko phải là do xử lý quá nhanh mà là cho dữ liệu nhận về quá chậm

Lỗi như trên đúng cần sửa lại là

Image1.Picture.Create;
Image1.Picture.LoadFromStream(Stream);