救救我呀,各位?到底用什么才能把JPG图片通过DBIMAGE转换为BMP后加入到DBASE的BLOB字段中?(200分)

  • 主题发起人 主题发起人 peterluolaw
  • 开始时间 开始时间
P

peterluolaw

Unregistered / Unconfirmed
GUEST, unregistred user!
我都快疯了.到底用什么才能把JPG图片通过DBIMAGE转换为BMP后加入到DBASE的BLOB字段中?!代码到底有没有问题?!JPEG已经添加了!这个玩意真的要把我逼疯了.求大家救我一命吧!

procedure TForm1.Button1Click(Sender: TObject);
var
MyJpeg: TJpegImage;
begin
if openpicturedialog1.Execute then
begin
MyJpeg :=TJpegImage.Create;
MyJpeg.LoadFromfile(openpicturedialog1.filename);
table1.edit;
DBImage1.Picture.Bitmap.assign(bitmap);
//提示 BITMAP IMAGE NOT VALID
//若改为 DBImage1.Picture.assign(myjpeg);
//则没有任何提示,但图片并没有保存下来,0字节.
//奇怪的是当改为 DBImage1.Picture.graphic.assign(myjpeg);
//则提示也一样是 BITMAP IMAGE NOT VALID!!!
table1.Post;
MyJpeg.Free;
end;
end;
 
用imageEN吧,在源码空间上有,处理这个问题很简单。
 
DBImage1没有构造TBitmap的实例,你自己构造一个TBitmap的实例
赋值给bitmap属性.


 
不行啊!胖的.代码改为下面的仍然不行!

procedure TForm1.Button1Click(Sender: TObject);
var
MyJpeg: TJpegImage;
bmp: tbitmap;
begin
if openpicturedialog1.Execute then
begin
MyJpeg :=TJpegImage.Create;
MyJpeg.LoadFromfile(openpicturedialog1.filename);
bmp:=tbitmap.create;
bmp.Assign(myjpeg);
//改为下面的这两句也不行,到了 TABLE1.POST 时还是 BITMAP IMAGE IS NOT VALID
//或者干脆来个 STREAM READ ERROR!
//DBIMAGE1.PICTURE.BITMAP.ASSING(BMP);
//TABLE1.POST;
bmp.SaveToFile('c:/tmp.bmp');
bmp.free;
table1.edit;
DBImage1.Picture.bitmap.loadfromfile('c:/tmp.bmp');
table1.Post;
MyJpeg.Free;
end;
end;
 
#include <jpeg.hpp>
#include <memory>

BOOL __fastcall LoadJPEG2Image( AnsiString JpgFile, Graphics::TBitmap * pBitmap )
{
try {
std::auto_ptr<TJPEGImage> jpg( new TJPEGImage );
jpg->LoadFromFile( JpgFile );
pBitmap->Width = jpg->Width;
pBitmap->Height = jpg->Height;
pBitmap->PixelFormat = (jpg->PixelFormat == jf24Bit ? pf24bit : pf8bit);
pBitmap->Assign( jpg.get() );
return TRUE;
}
catch (...)
{
}
return FALSE;
}
 
改为如下:
procedure TForm1.Button1Click(Sender: TObject);
var
MyJpeg: TJpegImage;
bmp: tbitmap;
begin
if openpicturedialog1.Execute then
begin
MyJpeg :=TJpegImage.Create;
bmp:=tbitmap.create;
MyJpeg.LoadFromfile(openpicturedialog1.filename);
bmp.Assign(myjpeg);
table1.edit;
DBIMAGE1.PICTURE.Assign(BMP); //关键的一句!
table1.Post;
MyJpeg.Free;
bmp.Free;
end;
end;
用Interbase数据库试过,应该可以。
 
To: MZR
ImageEn206找到了,但是不知道如何用它来向表文件中添加图片,能否请给段代码演示下?

To: Johny69
不行,"stream read error!"
 
To: MZR
ImageEn206找到了,缍把它的用法给弄明白了.谢谢!

 
后退
顶部