您的位置:

c语言实现图片水印,c语言 给图片加水印

本文目录一览:

如何利用纯C语言在图片上添加文字

代码的话 是比较复杂的

给你一个思路吧:

1 首先 你要有一个解析图片的。 如果是bmp的话, 就不需要解析了。 但bmp比较少见, 至少要支持jpg, png吧。 所以 需要一个图片解析的库

2 通过这个库, 把你的源图片, 读取, 解析成位图。

3 要加文字, 就需要字库, 所以 你还要一个字库文件。比如解析ttf的。

4 解析出文字点阵, 并根据位移,在点阵上赋值实现增加文字

5 保存图片。

搞定。

BMP文件添加自定义的水印(C语言)

用C语言在已有的bmp图片上添加文字生成新的图片方法是:

1、首先要了解位图文件的结构和熟悉C语言的画图函数等基层知识,这些知识可以在网上找到自学;

2、BMP(全称Bitmap)是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大,BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序,由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式,图像中每个像素的颜色值都保存在BMP文件中。

3、C语言是一种计算机程序设计语言,它既有高级语言的特点,又具有汇编语言的特点,它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序,因此,它的应用范围广泛,

用C语言显示BMP图片,最直接的方法就是先将每个像素的颜色值提取出来,再用C语言的画图函数画。

请问下c语言如何实现插入图片功能

C语言写控制台程序是无法加图片的,只能用命令行输出,最多就是设置下背景和字体,颜色之类的。如果开发API窗口程序,完全依赖于操作系统的函数库。C语言本身并不提供这类函数。

下面是windows系统下实现的函数代码,第一个参数是图片的存放的位置,第二个参数是窗口句柄。

HRESULT ShowPic(char *lpstrFile,HWND hWnd)

{

HDC hDC_Temp=GetDC(hWnd);

IPicture *pPic;

IStream *pStm;

BOOL bResult;

HANDLE hFile=NULL;

DWORD dwFileSize,dwByteRead;

//打开图形文件

hFile=CreateFile(lpstrFile,GENERIC_READ,

FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

if (hFile!=INVALID_HANDLE_VALUE)

{

dwFileSize=GetFileSize(hFile,NULL);//获取文件字节数

if (dwFileSize==0xFFFFFFFF)

return E_FAIL;

}

else

{

return E_FAIL;

}

//分配全局存储空间

HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);

LPVOID pvData = NULL;

if (hGlobal == NULL)

return E_FAIL;

if ((pvData = GlobalLock(hGlobal)) == NULL)//锁定分配内存块

return E_FAIL;

ReadFile(hFile,pvData,dwFileSize,dwByteRead,NULL);//把文件读入内存缓冲区

GlobalUnlock(hGlobal);

CreateStreamOnHGlobal(hGlobal, TRUE, pStm);

//装入图形文件

bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)pPic);

if(FAILED(bResult))

return E_FAIL;

OLE_XSIZE_HIMETRIC hmWidth; //图片的真实宽度, 单位为英寸 

OLE_YSIZE_HIMETRIC hmHeight; //图片的真实高度, 单位为英寸

pPic-get_Width(hmWidth);

pPic-get_Height(hmHeight);

//转换hmWidth和hmHeight为pixels距离,1英寸=25.4毫米

int nWidth = MulDiv(hmWidth,GetDeviceCaps(hDC_Temp,LOGPIXELSX),2540);

int nHeight = MulDiv(hmHeight,GetDeviceCaps(hDC_Temp,LOGPIXELSY),2540);

//将图形输出到屏幕上(有点像BitBlt)

bResult=pPic-Render(hDC_Temp,0,0,nWidth,nHeight,0,hmHeight,hmWidth,-hmHeight,NULL);

hmHeight,NULL);

pPic-Release();

CloseHandle(hFile);//关闭打开的文件

if (SUCCEEDED(bResult))

{

return S_OK;

}

else

{

return E_FAIL;

}

}