写法1:
imagejpg.LoadFromFile(image.Hint);
imagebmp.Picture.Bitmap.Assign(imagejpg);
dataset.Fields[8].Assign(imagebmp.Picture);
对上写法优化后,变成294K
写法2:
Image.picture.LoadFromFile( image.Hint );
if Image.picture <> NIL then
begin
Image.picture.SaveToClipboardFormat(MyFormat, AData,APalette);
DBIMG.Picture.LoadFromClipboardFormat(MyFormat, AData,APalette);
end;
各位大侠,谁还有更佳写法?望赐教!附开发环境:windows2000server+sqlserver2000+delphi6
imagejpg.LoadFromFile(image.Hint);
imagebmp.Picture.Bitmap.Assign(imagejpg);
dataset.Fields[8].Assign(imagebmp.Picture);
对上写法优化后,变成294K
写法2:
Image.picture.LoadFromFile( image.Hint );
if Image.picture <> NIL then
begin
Image.picture.SaveToClipboardFormat(MyFormat, AData,APalette);
DBIMG.Picture.LoadFromClipboardFormat(MyFormat, AData,APalette);
end;
各位大侠,谁还有更佳写法?望赐教!附开发环境:windows2000server+sqlserver2000+delphi6
解决方案 »
- 关于TListBox的奇怪问题
- 怎么我下载的所有控件包都不能安装,不是少这个文件就是说少那个文件。
- 跪求 在Dll文件里如何编写Sql操作语句
- 请教微软的Virtual-Key Code怎么没有定义小写字母呢?
- 什么问题?
- 小保寻找魏领军
- 还是刚才那个关于TADOTable问题,但是略有不同.
- 有关ctrl+alt+del
- 请问:BCB 与Delphi最大的区别是什么?
- 项羽 在么?那个程序有没有 Delphi 版本的?(有关数据结构的)
- 如何将SELECT后的结果存到一个临时表中? 在程序关掉后临时表会自动删除吗?
- 急!!关于用Package开发的一个问题,回答都有分,如果分数不够继续添加!!
你又將 jpg 圖片轉成 bmp, 當然文件會改大了!
所以, 你直接將文件用流的方式存進去就可了!
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;
pjpg.free;
end;
我参照此代码改写了原程序,但提示错误:系统提示
bitmap image is not valid请问怎么解决!!!!
你可能将 dbimage之类的数据感知控件与该字段绑定了, 但该类型控件只支持bmp类,所以会出错, 你现在的情况, 要么接收bmp大好几十倍的存储, 要么,要自己编写解码,从bmp 到jpg, 然后再到控件的显示!! 去掉dbimage之类的数据感知控件(只支持bmp),^_^,搞定
var
bS : TADOBlobStream;
Pic : TJpegImage;
begin
bS := TADOBlobStream.Create(adoWholewholepic, bmRead);
try
bS.Seek(JpegStartsInBlob(adoWholewholepic),soFromBeginning);
Pic:=TJpegImage.Create;
try
Pic.LoadFromStream(bS);
Image1.Picture.Graphic:=Pic;
finally
Pic.Free;
end;
finally
bS.Free;
end;
end;function JpegStartsInBlob(PicField: TBlobField): integer;
var
bS : TADOBlobStream;
buffer : Word;
hx : string;
begin
Result := -1;
bS := TADOBlobStream.Create(PicField, bmRead);
try
while (Result = -1) and (bS.Position + 1 < bS.Size) do
begin
bS.ReadBuffer(buffer, 1);
hx:=IntToHex(buffer, 2);
if hx = 'FF' then
begin
bS.ReadBuffer(buffer, 1);
hx:=IntToHex(buffer, 2);
if hx = 'D8' then Result := bS.Position - 2
else if hx = 'FF' then
bS.Position := bS.Position-1;
end; //if
end; //while
finally
bS.Free
end; //try
end;