procedure TForm1.IdUDPServer1UDPRead(Sender: TObject;AData: TStream; ABinding: TIdSocketHandle);
var
t_jpg:TJpegImage;
t_ms:Tmemorystream;begin
try try
t_ms:=Tmemorystream.Create;
t_jpg:=Tjpegimage.Create ;
t_ms.LoadFromStream(Adata);
t_jpg.LoadFromStream(t_ms) ;
t_jpg.JPEGNeeded; Image1.Picture :=nil;
Image1.Picture.Bitmap.Assign(t_jpg);//《---在这里出错,
finally
t_ms.Free;
t_jpg.Free;
end; except
end;
end;
高手麻烦帮解决下
var
t_jpg:TJpegImage;
t_ms:Tmemorystream;begin
try try
t_ms:=Tmemorystream.Create;
t_jpg:=Tjpegimage.Create ;
t_ms.LoadFromStream(Adata);
t_jpg.LoadFromStream(t_ms) ;
t_jpg.JPEGNeeded; Image1.Picture :=nil;
Image1.Picture.Bitmap.Assign(t_jpg);//《---在这里出错,
finally
t_ms.Free;
t_jpg.Free;
end; except
end;
end;
高手麻烦帮解决下
t_ms.Seek(0,soBeginning); //加上这句试试
t_jpg.LoadFromStream(t_ms) ;
t_jpg.JPEGNeeded;
先判断一下jpg的文件头看是不是真正的jpg,否则白忙。
if adata.size = 0 then exit; 加上判断
t_ms.LoadFromStream(Adata);
t_ms.Seek(0,soBeginning); //加上这句试试
t_jpg.LoadFromStream(t_ms) ;
t_jpg.JPEGNeeded;
类型不对吧
t_ms.position= 0;
t_ms.LoadFromStream(Adata);
t_jpg.LoadFromStream(t_ms);
image1.Picture.Assign(Jpg); //即可
//jpg图片转化为bmp图片
function JpgToBmp(jpg:tjpegImage;Var bmp:TBitmap):boolean;
begin
result:=true;
try
Bmp.Assign(jpg);
except
result:=false;
end;
end;//之后
imgsource.Picture.Bitmap:=bitmap;
//就可以了
因为Image.Picuture.bitmap的类型是TBitmap的,与你的Jpeg类型不匹配。
而Image.Picture是TCanvas类型的,与Jpeg是同一类型,可以赋值