① c語言程序中怎麼顯示圖片
用庫,比如OpenCV庫等。C語言本身是不能完成這些的。
② C語言中如何顯示圖片
1、圖片也是屬於文件類型的一種,圖片屬於二進制文件。使用fopen函數的二進制模式「rb」就可以打開。
2、常式:
#include<stdlib.h>
#include<stdio.h>
intmain()
{
FILE*fpPhoto,*fpText,*fpTarget;
intiRead;
charszBuf[100];
printf("請輸入第一個文件名(bmp): ");
gets(szBuf);
fpPhoto=fopen(szBuf,"rb");
printf("請輸入第二個文件名(txt): ");
gets(szBuf);
fpText=fopen(szBuf,"rb");
printf("請輸入目的文件名(bmp): ");
gets(szBuf);
fpTarget=fopen(szBuf,"wb");
if(!fpPhoto||!fpText||!fpTarget)
{
printf("打開文件失敗! ");
system("pause");
return-1;
}
while((iRead=fread(szBuf,1,sizeof(szBuf),fpPhoto))>0)
fwrite(szBuf,1,iRead,fpTarget);
while((iRead=fread(szBuf,1,sizeof(szBuf),fpText))>0)
fwrite(szBuf,1,iRead,fpTarget);
fclose(fpPhoto);
fclose(fpText);
fclose(fpTarget);
return0;
}
③ 怎樣用C語言顯示一張jpg的圖片呢
可以用函數OleLoadPicture從包含有圖像數據的流中裝載圖像。
具體實現代碼如下:
//在顯示圖像之前,首先要獲取到圖像文件的存放路徑,這里採用標準的文件打開對話框來選取圖像文件,文件名存放在CString型的變數m_sPath中:
CFileDialogdlg(TRUE,"jpg","*.jpg",
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
"JPEG文件(*.jpg)|*.jpg|GIF文件(*.gif)|*.gif||",NULL);
if(dlg.DoModal()==IDOK)
{
m_sPath=dlg.GetPathName();
Invalidate();
}
//為簡單計,圖形顯示的代碼直接在視類中的OnDraw中編寫,首先打開文件並判斷文件的可用性,並把文件內容放到流介面IStream的對象pStm中:
IStream*pStm;
CFileStatusfstatus;
CFilefile;
LONGcb;
……
if(file.Open(m_Path,CFile::modeRead)&&file.GetStatus(m_Path,fstatus)&&((cb=fstatus.m_size)!=-1))
{
HGLOBALhGlobal=GlobalAlloc(GMEM_MOVEABLE,cb);
LPVOIDpvData=NULL;
if(hGlobal!=NULL)
{
if((pvData=GlobalLock(hGlobal))!=NULL)
{
file.ReadHuge(pvData,cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal,TRUE,&pStm);
}
}
}
//然後,就直接調用OleLoadPicture函數從流中裝載圖像:
IPicture*pPic;
……
OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic));
//由於該函數有時會導致失敗,所以應當用SUCCEEDED宏來做一些適當的保護工作,只有在數據裝載成功的前提下才能繼續下面的圖像顯示工作:
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))
{
OLE_XSIZE_HIMETRIChmWidth;
OLE_YSIZE_HIMETRIChmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
doublefX,fY;
……
fX=(double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->GetDeviceCaps(HORZSIZE)*100.0);
fY=(double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0);
if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL)))
AfxMessageBox("渲染圖像失敗!");
pPic->Release();
}
else
AfxMessageBox("從流中裝載圖像失敗!");//其中,顯示工作主要是由IPicture介面對象的Render函數來完成的,該函數主要用來將圖片的指定部分畫到指定的設備環境的指定位置。
原型如下:
HRESULTRender(HDChdc,//渲染圖像用的設備環境句柄
longx,//在hdc上的水平坐標
longy,//在hdc上的垂直坐標
longcx,//圖像寬度
longcy,//圖像高度
OLE_XPOS_HIMETRICxSrc,//在源圖像上的水平偏移
OLE_YPOS_HIMETRICySrc,//在源圖像上的垂直偏移
OLE_XSIZE_HIMETRICcxSrc,//在源圖像上水平拷貝的數量
OLE_YSIZE_HIMETRICcySrc,//在源圖像上垂直拷貝的數量
LPCRECTprcWBounds//指向目標圖元設備環境句柄的指針);
④ 如何C語言顯示圖片(linux環境)
沒有像VC那樣被修改了標準的語言,所以可以認為linux下的C語言都是標準的。
這個程序要是所有的代碼都自己寫的話,會非常復雜的,並且操作系統也不允許你寫這樣的程序。目前條件下能用的有兩種比較簡單主流的解決方法。一是調用GTK庫函數,二是調用Qt庫函數。
按我的思路,啟動後程序先顯示一個窗口,把圖片作為窗口的背景或放入特定控制項,5秒鍾後,窗口關閉或等待某一信號。這種方法能在GTK下實現,Qt能不能行我沒試過(應該能行,都是圖形界面程序介面)。
至於代碼,我感覺你得自己寫,我寫的你得改好多才能用,不會GTK/Qt的話可以先學學,有C基礎的一看就懂,反正GTK是用標准C寫成的,所有調用都是C調用,QT沒用過
GTK相關資料:
⑤ C語言中怎麼讓圖片顯示在上面
問題描述的不夠精確,
純C處理圖片比較麻煩,你可以穗知圓用
C++使用控制項實現。
也可以使用支持中文的C語猛漏言
-
習語言,
來顯示圖片,
比較猜塌簡單。