帮忙看看从数据库读取图片显示到Image控件的问题.

mark2003 2006-09-28 09:32:59
我保存图片数据到数据库的时候的都是些jpg文件,部分是jpeg,数据库是sql server2000,储存类型是image,现在我使用以下代码提取数据库图片数据的时候老是提示jpeg error #52的错误,我的原始代码下面有,跟踪错误代码是在Pjp->LoadFromStream(Stream1)这里出错,我想知道应该如何处理才能把图片数据从数据库里面提取出来然后显示在image控件上面,我不用dbimage控件,因为他不能浏览大图片进行滚轴移动

ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from typetable where id=1320");
ADOQuery1->Open();

TStream *Stream1;
TJPEGImage *Pjp=new TJPEGImage();
Stream1=ADOQuery1->CreateBlobStream(ADOQuery1->FieldByName("thePhoto"), bmRead);
Pjp->LoadFromStream(Stream1);
Image1->Picture->Assign(Pjp);
delete Stream1;
...全文
178 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongsheng10101 2006-11-08
  • 打赏
  • 举报
回复
楼主保存到数据库的图片不是JPG图片,TJPEGImage只能操作JPG图片,不能用它去读取BMP等图片.
CACACACACA 2006-09-28
  • 打赏
  • 举报
回复
ADOTable1->Open();
TStream *Stream1;

ADOTable1->Edit();
Stream1=ADOTable1->CreateBlobStream(ADOTable1->FieldByName("Pic"), bmRead);
Stream1->Seek(0,soFromBeginning);
TJPEGImage *jp = new TJPEGImage();
jp->LoadFromStream(Stream1);
jp->DIBNeeded();
Image1->Picture->Assign(jp);
delete Stream1;
delete jp;
日总是我哥 2006-09-28
  • 打赏
  • 举报
回复
TMemoryStream *Stream1; ~
mark2003 2006-09-28
  • 打赏
  • 举报
回复
有SaveToFile这个方法的吗,编译通不过
日总是我哥 2006-09-28
  • 打赏
  • 举报
回复
为什么不使用 Image1->Picture->Bitmap->LoadFromStream ?
而要使用Assign?
至少可以省略创建Pjp :)
日总是我哥 2006-09-28
  • 打赏
  • 举报
回复
Stream1=ADOQuery1->CreateBlobStream(ADOQuery1->FieldByName("thePhoto"), bmRead);
Stream1->SaveToFile("c:\1.jpg");


然后看看1.jpg能不能正常打开~~~~~以验证stream是否有问题~
mark2003 2006-09-28
  • 打赏
  • 举报
回复
请问是哪里出了问题?
mark2003 2006-09-28
  • 打赏
  • 举报
回复
不想用DBImage处理显示出来这部分的功能
mark2003 2006-09-28
  • 打赏
  • 举报
回复
以下是我写数据进入sql server的代码,其实如果我使用DBImage来显示数据库的图片的话,是完全正常的,但我现在不想用DBImage.

if(container->OpenPictureDialog1->Execute())
{
AnsiString MyFilesExtension=UpperCase(ExtractFileExt(container->OpenPictureDialog1->FileName));
if(MyFilesExtension==".JPG")
{
TJPEGImage *jpg=new TJPEGImage();
jpg->LoadFromFile(container->OpenPictureDialog1->FileName);
Clipboard()->Assign(jpg); //使用这个Clipboard的时候需要把他的文件头给包含进来
DBImage1->DataSource->DataSet->Edit();
DBImage1->PasteFromClipboard();
DBImage1->DataSource->DataSet->Post();
delete jpg;
}
}
柯本 2006-09-28
  • 打赏
  • 举报
回复
程序上看不出有什么问题,会不会是你数据库的数据不对?

13,874

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧