请帮我看看下面有关使用image显示和保存jpg图片的问题,谢谢!procedure TForm1.ToolButton7Click(Sender: TObject);
var
MsImg: TMemoryStream;
JpImg: TJpegImage;
begin
try
MsImg := TMemoryStream.Create;
MsImg.LoadFromFile('C:\1.Jpg'); JpImg := TJpegImage.Create;
//JpImg.LoadFromStream(MsImg);
//JpImg.SaveToFile('C:\2.Jpg'); ADODataSet1.Append;
TBlobField(ADODataSet1.FieldByName('Img')).LoadFromStream(MsImg);
ADODataSet1.Post; JpImg.LoadFromStream(MsImg);
JpImg.SaveToFile('C:\3.Jpg');
finally
MsImg.Free;
JpImg.Free;
end;
end;
上面的代码运行后无错误提示,但C:\3.Jpg字节为0
如果改为:
try
MsImg := TMemoryStream.Create;
MsImg.LoadFromFile('C:\1.Jpg'); JpImg := TJpegImage.Create;
JpImg.LoadFromStream(MsImg);
JpImg.SaveToFile('C:\2.Jpg'); ADODataSet1.Append;
TBlobField(ADODataSet1.FieldByName('Img')).LoadFromStream(MsImg);
ADODataSet1.Post; //JpImg.LoadFromStream(MsImg);
//JpImg.SaveToFile('C:\3.Jpg');
finally
MsImg.Free;
JpImg.Free;
end;
则正确。C:\2.Jpg和C:\1.Jpg一样。不知道为什么?数据保存没有问题,数据库是sql2000,字段类型image
同一个数据:
procedure TForm1.ToolButton5Click(Sender: TObject);
var
MsImg: TMemoryStream;
JpImg: TJpegImage;
begin
try
TBlobField(ADODataSet1.FieldByName('Img')).SaveToFile('c:\4.jpg'); MsImg := TMemoryStream.Create;
JpImg := TJpegImage.Create;
TBlobField(ADODataSet1.FieldByName('Img')).SaveToStream(MsImg);
JpImg.LoadFromStream(MsImg);
JpImg.SaveToFile('C:\5.Jpg');
finally
JpImg.Free;
MsImg.Free;
end;
end;
结果:C:\4.Jpg和C:\1.Jpg是一样的,C:\2.Jpg字节为0,不明白?请教,在线等待。
var
MsImg: TMemoryStream;
JpImg: TJpegImage;
begin
try
MsImg := TMemoryStream.Create;
MsImg.LoadFromFile('C:\1.Jpg'); JpImg := TJpegImage.Create;
//JpImg.LoadFromStream(MsImg);
//JpImg.SaveToFile('C:\2.Jpg'); ADODataSet1.Append;
TBlobField(ADODataSet1.FieldByName('Img')).LoadFromStream(MsImg);
ADODataSet1.Post; JpImg.LoadFromStream(MsImg);
JpImg.SaveToFile('C:\3.Jpg');
finally
MsImg.Free;
JpImg.Free;
end;
end;
上面的代码运行后无错误提示,但C:\3.Jpg字节为0
如果改为:
try
MsImg := TMemoryStream.Create;
MsImg.LoadFromFile('C:\1.Jpg'); JpImg := TJpegImage.Create;
JpImg.LoadFromStream(MsImg);
JpImg.SaveToFile('C:\2.Jpg'); ADODataSet1.Append;
TBlobField(ADODataSet1.FieldByName('Img')).LoadFromStream(MsImg);
ADODataSet1.Post; //JpImg.LoadFromStream(MsImg);
//JpImg.SaveToFile('C:\3.Jpg');
finally
MsImg.Free;
JpImg.Free;
end;
则正确。C:\2.Jpg和C:\1.Jpg一样。不知道为什么?数据保存没有问题,数据库是sql2000,字段类型image
同一个数据:
procedure TForm1.ToolButton5Click(Sender: TObject);
var
MsImg: TMemoryStream;
JpImg: TJpegImage;
begin
try
TBlobField(ADODataSet1.FieldByName('Img')).SaveToFile('c:\4.jpg'); MsImg := TMemoryStream.Create;
JpImg := TJpegImage.Create;
TBlobField(ADODataSet1.FieldByName('Img')).SaveToStream(MsImg);
JpImg.LoadFromStream(MsImg);
JpImg.SaveToFile('C:\5.Jpg');
finally
JpImg.Free;
MsImg.Free;
end;
end;
结果:C:\4.Jpg和C:\1.Jpg是一样的,C:\2.Jpg字节为0,不明白?请教,在线等待。
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————