Delphi 将JPEG保存到数据库
此代码在TBlobField行提供访问冲突:Delphi 将JPEG保存到数据库,delphi,Delphi,此代码在TBlobField行提供访问冲突: procedure TfrmCapture.Button3Click(Sender: TObject); var j: TJPEGImage; S: TFileStream; begin J := TJPEGImage.Create; try J.Assign(Image1.Picture.Graphic); J.CompressionQuality := 80; J.Compress; J.SaveT
procedure TfrmCapture.Button3Click(Sender: TObject);
var
j: TJPEGImage;
S: TFileStream;
begin
J := TJPEGImage.Create;
try
J.Assign(Image1.Picture.Graphic);
J.CompressionQuality := 80;
J.Compress;
J.SaveToStream(S);
S.Position := 0;
TBlobField(frmSignout.tblImg.FieldByName('Picture')).LoadFromStream(S);
finally
J.Free;
end;
Image1.Picture := nil;
Close;
end;
基本上,我正在尝试将图像转换成JPEG格式,然后将其保存到图像字段MSSQL express
有什么办法解决吗?伙计,我只是累了……当然不是文件流,而是内存流……天啊 这是在MSSQL express ~50kb/图像中将图像另存为JPEG的正确代码:
procedure TfrmCapture.Button3Click(Sender: TObject);
var
j:TJPEGImage;
S : TMemorystream;
begin
J := TJPEGImage.Create;
S := Tmemorystream.Create;
try
J.Assign(image1.Picture.graphic);
J.CompressionQuality :=80;
J.Compress;
J.SaveToStream(S);
S.Position :=0;
(frmSignout.tblImg.FieldByName('Picture') as TblobField).LoadFromStream(S);
finally
J.Free;
S.Free;
end;
image1.Picture :=nil;
close;
end;
您没有实例化保存到以下位置的TFileStream:
procedure TfrmCapture.Button3Click(Sender: TObject);
var
J: TJPEGImage;
S: TFileStream;
begin
J := TJPEGImage.Create;
try
J.Assign(Image1.Picture.Graphic);
J.CompressionQuality := 80;
J.Compress;
S := TFileStream.Create('c:\path to\somefile.jpg', fmCreate); // <-- add this!
try
J.SaveToStream(S);
S.Position := 0;
TBlobField(frmSignout.tblImg.FieldByName('Picture')).LoadFromStream(S);
finally
S.Free; // <-- add this
end;
finally
J.Free;
end;
Image1.Picture := nil;
Close;
end;
刚刚意识到流可能是空的,然后它抛出了访问冲突…这是可能的吗?我可以将流分配给Image2,它显示时没有问题。是否听说过TFileStream。Create e.g.S:=TFileStream。Create'c:\test.dat',fmOpenReadWrite;您是如何在丢失缩进的同时突出显示此代码块的?o_0Man我有什么问题?应该是MemoryStream而不是FileStream。我浪费了一个小时试图弄清楚。@Sardukar:你应该把这个问题作为原始问题的编辑发布,而不是作为单独的答案发布。o我明白了。我想我应该出于教育目的保留这个错误。是的,谢谢。
procedure TfrmCapture.Button3Click(Sender: TObject);
var
J: TJPEGImage;
S: TStream;
begin
J := TJPEGImage.Create;
try
J.Assign(Image1.Picture.Graphic);
J.CompressionQuality := 80;
J.Compress;
S := frmSignout.tlbImg.CreateBlobStream(frmSignout.tblImg.FieldByName('Picture'), bmWrite);
try
J.SaveToStream(S);
finally
S.Free;
end;
finally
J.Free;
end;
Image1.Picture := nil;
Close;
end;