请教图片存取的问题

alllo 2002-02-27 09:43:50
我的问题是这样的,如何用vc把图片(jpg)存入数据库,然后再读出来,显示在对话框上。如果有完整的例子给100分。我的e-mail是alllo@263.net
...全文
40 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcpb 2002-02-27
  • 打赏
  • 举报
回复
我有,不过是bmp的,要吗
dolphi 2002-02-27
  • 打赏
  • 举报
回复
bcb的要不要啊?你可以做成dll,用vc调用。
下面例子把屏幕拷贝后存成文件。
void JPG()
{
HWND hDesktopWnd = GetDesktopWindow();
HDC hDesktopDC = GetDC(hDesktopWnd);
WINDOWINFO pwi;

TJPEGImage *JpegImage = new TJPEGImage;
Graphics::TBitmap *Bitmap = new Graphics::TBitmap;

GetWindowInfo(hDesktopWnd, &pwi);
Bitmap->Width = pwi.rcWindow.right ;
Bitmap->Height = pwi.rcWindow.bottom ;

BitBlt(Bitmap->Canvas->Handle,0,0,Bitmap->Width,Bitmap->Width,
hDesktopDC,0,0,SRCCOPY );

ReleaseDC(hDesktopWnd,hDesktopDC);

JpegImage->Assign(Bitmap);
JpegImage->SaveToFile("Scr.jpg");

delete Bitmap;
delete JpegImage;
}
pinel 2002-02-27
  • 打赏
  • 举报
回复
BMP,JPG,GIF都可以

FullDC(CString fn)
{
// TODO: add draw code for native data here
CWaitCursor wait;
CFileStatus fstatus;CFile file;
LONG cb;
if (file.Open(fn,CFile::modeRead)&&file.GetStatus(fn,fstatus)&&((cb = fstatus.m_size) != -1))
{
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
if (hGlobal != NULL)
{
LPVOID pvData=NULL;
if ((pvData = GlobalLock(hGlobal)) != NULL)
{
IPicture *pPic;IStream *pStm;
file.ReadHuge(pvData, cb);file.Close ();
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))
{
CDC *allDC=GetDC();
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
double fX,fY;
fX = (double)(long)((double)allDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)allDC->GetDeviceCaps(HORZSIZE)*100.0));
fY = (double)(long)((double)allDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)allDC->GetDeviceCaps(VERTSIZE)*100.0));
if(!m_bFitSize)
m_allRect=CRect(0,0,(long)fX,(long)fY);
else
{
GetClientRect(m_allRect);m_allRect.NormalizeRect ();
CRect old=m_allRect;
CPoint bg(0,0);
double fdx=m_allRect.Width ()/fX;
double fdy=m_allRect.Height ()/fY;
double fd;
if(fdx fd=fdx;
else
fd=fdy;
m_allRect.right=m_allRect.left +(long)(fX*fd)-1;
m_allRect.bottom =m_allRect.top +(long)(fY*fd)-1;

}
ClearDC();
m_DC.CreateCompatibleDC (allDC);
m_Bitmap.CreateCompatibleBitmap (allDC,m_allRect.Width(),m_allRect.Height ());
if(m_Bitmap.GetSafeHandle ()==NULL){ReleaseDC(allDC);pPic->Release();pPic->Release();GlobalFree(hGlobal);ClearDC();return false;}
m_pBitmap=m_DC.SelectObject (&m_Bitmap);
ReleaseDC(allDC);

SetScrollSizes(MM_TEXT,CSize(m_allRect.Width (),m_allRect.Height ()));
CBrush brs;brs.CreateSolidBrush (RGB(0,0,0));
m_DC.FillRect (m_allRect,&brs);
brs.DeleteObject ();
if(FAILED(pPic->Render(m_DC.m_hDC ,0,0,m_allRect.Width (),m_allRect.Height (),0,hmHeight,hmWidth,-hmHeight,NULL))) return false;
pPic->Release();GlobalFree(hGlobal);
SetFileList(fn);
}
else
{
GlobalFree(hGlobal);
ClearDC();
return false;
}
}
else
{
file.Close ();
GlobalFree(hGlobal);
ClearDC();
return false;
}
}
else
{
file.Close();
ClearDC();
return false;
}
}
else {ClearDC();return false;}
return true;
}
vcpb 2002-02-27
  • 打赏
  • 举报
回复
ok,接吧
alllo 2002-02-27
  • 打赏
  • 举报
回复
要,将就一下吧 发到我的信箱吧

16,551

社区成员

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

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

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