如何显示JPG文件?

xinghaifeng 2002-03-12 09:11:14
在数据库中blob字段中存储的jpg文件如何通过dbimage显示出来?或有更好的方法显示?
...全文
135 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zouzhichang 2002-03-20
  • 打赏
  • 举报
回复
用类,或API哦,API功能强大哦!
xinghf 2002-03-20
  • 打赏
  • 举报
回复
if(CustomerData-> ryqkZP->BlobSize>10)
{
TBlobStream * Stream = new TBlobStream(CustomerData->ryqkZP,bmRead);
TJPEGImage *jp = new TJPEGImage();
try
{
jp->LoadFromStream(Stream);
Image1->Picture->Graphic=jp;
}
__finally
{
delete jp;
}
}
vcfor 2002-03-19
  • 打赏
  • 举报
回复
save
蒋晟 2002-03-19
  • 打赏
  • 举报
回复
in http://www.csdn.net/Develop/article/12/12866.shtm

目前我的解决方案

在使用了多种图形显示方案之后,我决定使用微软提供的IPicture接口来显示图像。由于MFC的CPictureHolder类是这个接口的一个封装,而且自带了从图像句柄读入图形的功能,所以我的工作以CPictureHolder类为基础。要是你不喜欢MFC的话,你可以把CPictureHolder类的代码从MFC的源代码里面分离出来单独使用。

CPictureHolder类的设计目的是实现ActiveX控件的Picture属性,允许用户在控件中显示图像。作为默认的Picture属性,开发者可以指定一个位图(Bitmap),图标(Icon),或者图元文件(Metafile)来显示。虽然微软的文档中并未说明支持JPEG格式的图像,但是经过我的测试,在Windows98以上,以及Windows2000中,它实际上是支持JPEG格式的,根据微软的文档,支持的图像格式有BMP,DIB,WMF,ICO。笔者并未测试其他图像格式是否被支持,例如PNG、GIF、PCX等等,有兴趣的读者可以去自己测试一下。(据111222的文档http://www.csdn.net/develop/read_article.asp?id=10632,也支持GIF格式)



由于CPictureHolder类并未实现从文件/资源/内存读入图像,使用起来很不方便,所以我扩展了这个类以支持上述功能。部分工作基于Dr. Yovav Gad, (Sources@SuperMain.com ,www.SuperMain.com)和http://www.thecodeproject.com/bitmap/cpicture.asp的代码。

......
xinghaifeng 2002-03-19
  • 打赏
  • 举报
回复
代码有点复杂,能不能给讲解一下。
kimryo 2002-03-15
  • 打赏
  • 举报
回复
CoInitialize(NULL);
//IPicture* ppic=NULL;
CComQIPtr<IPicture> ppic;
PICTDESC pd;
ZeroMemory(&pd,sizeof(PICTDESC));
pd.cbSizeofstruct=sizeof(PICTDESC);
pd.picType=PICTYPE_BITMAP;
//pd.bmp
/*IDispatch* pdisp=NULL;
CoCreateInstance(CLSID_ILyric,0,CLSCTX_INPROC_SERVER,IID_IDispatch,(void**)(&pdisp));
assert(pdisp);
pdisp->QueryInterface(IID_IPicture,(void**)(&ppic));
assert(ppic);
ppic->Release();
pdisp->Release();*/
CFile pf,sf;
pf.Open("D:\\Documents and Settings\\kim-ryo\\My Documents\\My Pictures\\0001.jpg",CFile::modeReadWrite);
sf.Open("d:\\007.bmp",CFile::modeCreate|CFile::modeReadWrite);
CArchive ar(&pf, CArchive::load | CArchive::bNoFlushOnDelete),sr(&sf,CArchive::store);
CArchiveStream arcstream(&ar),src(&sr);
OleLoadPicture((IStream*)(&arcstream),0, FALSE,IID_IPicture,(void**)&ppic);
assert(ppic);

RECT r;
GetWindowRect(&r);
CRect rect(r);
long height,width;
ppic->get_Height(&height);
ppic->get_Width(&width);
ppic->Render(::GetDC(0),rect.left,rect.top,rect.Width(),rect.Height(),0,height,width,-height,&rect);
SHORT type;
ppic->get_Type(&type);
//ppic->SaveAsFile((IStream*)(&src),TRUE,NULL);
ppic.Release();
//ppic->Release();
CoUninitialize();
yongdu 2002-03-15
  • 打赏
  • 举报
回复
用IPicture接口
xinghf 2002-03-15
  • 打赏
  • 举报
回复
gz
king_koo 2002-03-13
  • 打赏
  • 举报
回复
同意ma811(马头)
用IPicture接口。不过好想挺麻烦的,要几十行代码
suduan 2002-03-13
  • 打赏
  • 举报
回复
freeimage
aspiregao 2002-03-12
  • 打赏
  • 举报
回复
dbimage好像是delphi下的吧,在delphi下你可以用流格式或文件格式读取blob字段
xinghaifeng 2002-03-12
  • 打赏
  • 举报
回复
ma811(马头)
请详细一点
ma811 2002-03-12
  • 打赏
  • 举报
回复
IPicture接口
xinghaifeng 2002-03-12
  • 打赏
  • 举报
回复
dbimage是VCL控件。
strip 2002-03-12
  • 打赏
  • 举报
回复
这是vc的类?dbimage?

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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