如何将Timage中的图像保存在sql数据库中(65分)

  • 主题发起人 主题发起人 chenliyan163
  • 开始时间 开始时间
C

chenliyan163

Unregistered / Unconfirmed
GUEST, unregistred user!
1。如何将BMP转成JPG,JPG转成BMP。
2。如何将Timage中的图像保存在sql数据库中。
 
TBlobField(Query1.FieldbyName[fieldname]).LoadFromFile/LoadFromStream
 
uses jpeg;
var
Ind,i:Integer;
FName:string;
AJPeg:TJPEGImage;
temp:TBitmap;
begin
if opd1.Execute then
begin
Ind:=Opd1.Files.Count;
for i:=0 to Ind-1 do
begin
FName:=opd1.Files.Strings;
Application.ProcessMessages;
adotable1.Append;
//adotable1.FieldByName ('images').AsString:=FName;
if UpperCase(Copy(FName,Length(Fname)-3,4))='.JPG' then
begin
AJpeg:=TJPEGImage.Create;
AJpeg.LoadFromFile(FName);
Temp:=TBitmap.Create;
Image1.Height:=Ajpeg.Height;
Image1.Width:=Ajpeg.Width;
Image1.Picture:=nil;
Image1.Canvas.Draw(0,0,Ajpeg);
DBImage1.Picture:=Image1.Picture; //jpg
AJpeg.Free;
end
else
ADOTable1images.LoadFromFile(FName); //针对bmp
adotable1.Post;
end;
end; 表结构:图片字段:image类型
 
可以如下,(其他格式也许也可,试一下)记得加入 use jpeg.

var
MyJpeg: TJpegImage;
Image1: TImage;
begin
Image1:= TImage.Create(self);
MyJpeg:= TJpegImage.Create;
Image1.Picture.Bitmap.LoadFromFile('c:/windows/desktop/aa.BMP'); // Load the Bitmap from a file
MyJpeg.Assign(Image1.Picture.Bitmap); // Assign the BitMap to MyJpeg object
MyJpeg.CompressionQuality:=StrToInt('75');
MyJpeg.Compress;
MyJpeg.SaveToFile('c:/windows/desktop/test.JPG'); // Save the JPEG to Disk
end;

var
MyJpeg: TJpegImage;
bmp: Tbitmap;
begin
bmp:=tbitmap.Create;
MyJpeg:= TJpegImage.Create;
myjpeg.LoadFromFile('c:/windows/desktop/aa.jpg');
bmp.Assign(myjpeg);
bmp.SaveToFile('c:/windows/desktop/test.bmp'); // Save the JPEG to Disk
end;

**************************************************************************
///Bitmap 和 JPEG 格式间的快速转换
function Bmp2Jpg(Bmp: TBitmap; Quality: Integer = 100): TJpegImage;
begin
Result := nil;
if Assigned(Bmp)
then begin
Result := TJpegImage.Create;
Result.Assign(Bmp); {It′s all folks...}
Result.CompressionQuality := Quality;
Result.JPEGNeeded; {Key method...}
Result.Compress;
end;
end;
function Jpg2Bmp(Jpg: TJpegImage): TBitmap;
begin
Result := nil;
if Assigned(Jpg)
then begin
Result := TBitmap.Create;
Jpg.DIBNeeded; {Key method...}
Result.Assign(Jpg); {It′s all folks...}
end;
end;
一个利用TBlobStream在数据库中保存BMP和JPG图片的例子
http://www.aidelphi.com/6to23/Docu/BlobStream.zip
 
yf168:下面这句话运行通不过
ADOTable1images.LoadFromFile(FName); //针对bmp

 
ADOTable1images.LoadFromFile(FName); //针对bmp
其中ADOTable1images---是在字段编辑器中静态加进去的
字段名是 images
所以可以用 adotableimages来引用images字段....
 
哦,谢谢,但现在照您这样写的话,运行(RUN)根本通不过啊
 
以上代码 我运行过,绝对没问题
你要把问题 写出来
 
Table1.Open;
Table1.Last;
Table1.Append;
Table1.FieldByName('Cjrq').AsDateTime:=Date;
TBlobField(Table1.FieldByName('FileData')).LoadFromFile('aa.jpg');
Table1.Post;
Table1.Close;

或者
procedure TMainForm.N25Click(Sender: TObject);
var
DataStream:TMemoryStream;
begin
DataStream:=TMemoryStream.Create;
try
DataStream.LoadFromFile('aa.jpg');
DataStream.Position:=0;
Table1.Open;
Table1.edit;
TBlobField(Table1.FieldbyName('FileData')).LoadFromStream(DataStream);
Table1.Post;
finally
DataStream.Free;
end;

资源:aa.jpg文件的长度不能>32K,否则需要改参数。
 
yf168:我用的是delphi6 运行后是这样的http://www.my2000.biz/chenj/jpg/rum.jpg
您也可以发到我的邮箱chen_li_yan163@163.com
小弟我非常的感谢
 
你没看清楚我的回答
这样,
1、假设你有一个字段名字叫images(是image类型的)
2、table1.tablename='yourtable'; //设计期间在属性里面设
3、双击 table1,点右健 选中 第三个菜单 (add all fields)
这样就可以了,table1images这个变量就有了,也不会出现‘没有定义的变量'的错误
如果还不行,那我也没有办法,自己多琢磨琢磨
 
谢谢yf168真诚的指导
 
后退
顶部