今天给各位分享c语言显示一幅图像的知识,其中也会对C语言显示图片进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、C语言中如何显示图片?2、C语言怎么输出一张图片?3、怎样用C语言显示一张jpg的图片呢
C语言中如何显示图片?
1、图片也是属于文件类型的一种,图片属于二进制文件。使用fopen函数的二进制模式“rb”就可以打开。
2、例程:
#include stdlib.h
#include stdio.h
int main ()
{
FILE * fpPhoto, * fpText, * fpTarget ;
int iRead ;
char szBuf[100] ;
printf (“请输入第一个文件名(bmp):\n”) ;
gets (szBuf) ;
fpPhoto = fopen (szBuf, “rb”) ;
printf (“请输入第二个文件名(txt):\n”) ;
gets (szBuf) ;
fpText = fopen (szBuf, “rb”) ;
printf (“请输入目的文件名(bmp):\n”) ;
gets (szBuf) ;
fpTarget = fopen (szBuf, “wb”) ;
if (!fpPhoto || !fpText || !fpTarget)
{
printf (“打开文件失败!\n”) ;
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) ;
return 0 ;
}
C语言怎么输出一张图片?
输出到文件的话,按照指定图片格式,写入文件即可。
电脑型号:微星 GF63 Thin 9SC
系统版本:Microsoft Windows 10
文本文件
1、打开电脑上要读取的文本文件。
2、打开文本后,点击文本左上角的【文件】按钮。
3、点击【另存为】。这样就会保存本来的这个文本文件,生成一个新的c文件。
4、点击【保存类型-对应的下拉按钮】。
5、选择【C source file(*.c)】。这个就是我们需要转换成C格式的后缀。
6、选择后,点击【保存】。保存后我们即可正常读取该文件了。
怎样用C语言显示一张jpg的图片呢
可以用函数OleLoadPicture从包含有图像数据的流中装载图像。
具体实现代码如下:
//在显示图像之前,首先要获取到图像文件的存放路径,这里采用标准的文件打开对话框来选取图像文件,文件名存放在CString型的变量m_sPath中:
CFileDialog dlg(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;
CFileStatus fstatus;
CFile file;
LONG cb;
……
if (file.Open(m_Path,CFile::modeRead)file.GetStatus(m_Path,fstatus) ((cb = fstatus.m_size) != -1))
{
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData = 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_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
pPic->get_Width(hmWidth);
pPic->get_Height(hmHeight);
double fX,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函数来完成的,该函数主要用来将图片的指定部分画到指定的设备环境的指定位置。
原型如下:
HRESULT Render( HDC hdc, //渲染图像用的设备环境句柄
long x, //在hdc上的水平坐标
long y, //在hdc上的垂直坐标
long cx, //图像宽度
long cy, //图像高度
OLE_XPOS_HIMETRIC xSrc, //在源图像上的水平偏移
OLE_YPOS_HIMETRIC ySrc, //在源图像上的垂直偏移
OLE_XSIZE_HIMETRIC cxSrc,//在源图像上水平拷贝的数量
OLE_YSIZE_HIMETRIC cySrc,//在源图像上垂直拷贝的数量
LPCRECT prcWBounds //指向目标图元设备环境句柄的指针);
c语言显示一幅图像的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于C语言显示图片、c语言显示一幅图像的信息别忘了在本站进行查找喔。