做过FastReport打印图片的请进
图片存在数据库中,BMP和JPG格式都有,但是数据集中有些记录是空的,没有图图,打印时却显示了别人的照片,我写的代码如下:
procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent);
var MS1,MS2:TMemoryStream;
i:integer;
C:byte;
ImageType,sFileName:String;
begin
try
MS1:=TMemoryStream.Create;
MS2:=TMemoryStream.Create;
TBlobField(self.Qry_Data.FieldByName('C1101')).SaveToStream(MS1);
MS1.Position:=0;
MS1.Seek(0,0);
if MS1.Size<=0 then exit;
ImageType := '';
for i := 0 to 3 do
begin
MS1.Read(C, 1);
ImageType := ImageType + Char(C);
end;
ImageType := Trim(ImageType);
if pos('JJJ',ImageType)>0 then ImageType:='JPG';
MS2.Clear;
for I := 0 to MS1.Size - 3 do
begin
MS1.Read(C, 1);
MS2.Write(C, 1);
end;
//将图片流保存到临时文件中
MS2.Seek(0, 0);
sFileName:=sFileName+'.'+ImageType;
MS2.SaveToFile(sFileName);
if (Sender is TfrxPictureView) then
(Sender as TfrxPictureView).Picture.LoadFromFile(sFileName); //这里总是会载入,
finally
if Assigned(MS1) then
MS1.Free;
if Assigned(MS2) then
MS2.Free;
end;
end;