<1>.据说字段类型为OLE时能存储图片,当图片为JPG格式时用流操作,请各位告知如何做?
<2>.若存储的是路径和名称时又该怎么做?据说这样效率高。
比如说有一个表为Table,其一个字段Img为OLE类型,现在我想在某个记录(或者说任一记录,就象在Access下操作一样!)为A(主键)的Img中插入F:\JPG.jpg图片,该怎么操作?怎么显示?请给出代码!谢谢!
<2>.若存储的是路径和名称时又该怎么做?据说这样效率高。
比如说有一个表为Table,其一个字段Img为OLE类型,现在我想在某个记录(或者说任一记录,就象在Access下操作一样!)为A(主键)的Img中插入F:\JPG.jpg图片,该怎么操作?怎么显示?请给出代码!谢谢!
begin
pic:=TMemoryStream.Create;
image1.Picture.SaveToStream(pic);
pic.Position:=0;
TBlobField(FieldByName('Img')).LoadFromStream(pic);
pic.Free;
end;
a.读取var
tmpF:TBlobField;
filename:String;
..
tmpF:=Table1.FieldByName('Image') as TBlobField;
filename:=Table1.FieldByName('FileName').AsString;
tmpF.SaveToFile(filename);b.写入var
tmpF:TBlobField;
..
tmpF:=Table1.FieldByName('Image') as TBlobField;
Table1.FieldByName('FileName').Value:=filename;
tmpF.LoadFromFile(filename);<2>.若存储的是路径和名称时
将图片复制到exe下一级目录 ImageFodera.读取var
filename:String;
filepath:String;
..
filename:=Table1.FieldByName('FileName').AsString;
filepath:=ExtractFilePath(Application.ExeName);
filename:=filepath+filename;
//打开文件 b.写入var
filepath:String;
..
Table1.FieldByName('FileName').Value:=ExtractFileName(filename);
CopyFile(filename,filepath+ExtractFileName(filename));
您这段类似的代码我见过,可我就是不懂。
to gong_hui2000:
还是不懂啊,详细点行否?
CopyFile(filename,filepath+ExtractFileName(filename)); 中filename怎么定义?还有,编译时说不是table插入方式,用query也是如此。
各位,用下面的写点代码吧:
比如说有一个表为Table,其一个字段Img为OLE类型,现在我想在某个记录(或者说任一记录,就象在Access下操作一样!)为A(主键)的Img中插入F:\JPG.jpg图片,该怎么操作?怎么显示?
//CopyFile(SorceFile:PAnsiChar, TargetFile:PAnsiChar, bFailExists:Boolean);
CopyFile(filepath+ExtractFileName(filename),filename,false);这种方式只是存储文件名,而将文件内容复制到指定的目录下。所以Img必须为文本类型#A(主键)的Img中插入F:\JPG.jpg图片,该怎么操作?怎么显示Table.FieldByName('Img').Value:='Jpg.jpg';CopyFile('f:\jpg.jpg',ExtractFilePath(Application.ExeName)+'jpg.jpg',false);
m_jpeg : TJpegImage;
m_blob : TStream;
begin
{读取JPG图像}
m_blob := adoDataSet.CreateBlobStream(adoDataSet.FieldByName ('Picture'),bmRead);
m_jpeg:=TJpegImage.Create;
try
if m_blob.Size<>0 then begin
try
m_jpeg.LoadFromStream(m_blob);
imInput.Picture.Assign(m_jpeg);
imInput.Refresh;
except
end;{try}
end
else
imInput.Picture.Assign(nil);
finally
m_jpeg.Free;
m_blob.Free;
end;{try}
end;begin
{如果图像不为空,把图像以JPG格式导入到字段中}
if Assigned(imInput.Picture.Graphic) then begin
jpg := TJpegImage.Create;
ms := TMemoryStream.Create;
try
jpg.Assign(imInput.Picture.Graphic);
jpg.SaveToStream(ms);
if SizeOf(ms) > 0 then
(adoDataSet.FieldByName('PICTURE') as TBlobField).LoadFromStream(ms);
finally
ms.Free;
jpg.Free;
end;{try}
end;{if}
//注:imInput为TImage类型
end;
pjpg:tjpegimage;
pic:TMemoryStream;
begin
pjpg:=tjpegimage.Create;
pjpg.LoadFromFile(F:\JPG.jpg);
pic:=TMemoryStream.Create;
pjpg.SaveToStream(pic);
pic.Position:=0;
dataset.TBlobField(FieldByName('Img')).LoadFromStream(pic);
dataset.post;
pic.Free;
end;都第二遍了~~
这个完全按着你的意思了,而且简单!
var
pjpg:tjpegimage;
pic:TMemoryStream;
begin
pjpg:=tjpegimage.Create;
pjpg.LoadFromFile(F:\JPG.jpg);
pic:=TMemoryStream.Create;
pjpg.SaveToStream(pic);
pic.Position:=0;
TBlobField(dataset.FieldByName('Img')).LoadFromStream(pic);
dataset.post;
pic.Free;
end;都第二遍了~~
这个完全按着你的意思了,而且简单!
我的Email:[email protected]
谢谢!
var
jpg:Tjpegimage;
begin
jpg:=Tjpegimage.Create;
jpg.LoadFromFile('filepath+filename');//这句可以
// if openpicturedialog1.Execute then
// jpg.LoadFromFile(''''+openpicturedialog1.FileName+'''');//这两句为什么不行?提示不能打开这个文件。经查看,得到的路径和文件跟前一句是一样的
还有,下面的也不行:
procedure TForm1.Image1Click(Sender: TObject);
begin
if openpicturedialog1.Execute then
image1.Picture.LoadFromFile (''''+openpicturedialog1.FileName+'''');
end;
xdf_hubei(向太傅) :
发各给我吧!谢谢!
各位:
下面是怎么回事?
var
jpg:Tjpegimage;
begin
jpg:=Tjpegimage.Create;
jpg.LoadFromFile('filepath+filename');//这句可以
// if openpicturedialog1.Execute then
// jpg.LoadFromFile(''''+openpicturedialog1.FileName+'''');//这两句为什么不行?提示不能打开这个文件。经查看,得到的路径和文件跟前一句是一样的
还有,下面的也不行:
procedure TForm1.Image1Click(Sender: TObject);
begin
if openpicturedialog1.Execute then
image1.Picture.LoadFromFile (''''+openpicturedialog1.FileName+'''');
end;
zdcnow(磁效应):
麻烦您的例子也请发一下。