关于vc将图片进行灰度化的程序原理

关于vc将图片进行灰度化的程序原理,第1张

24位色位图,一个像素是用3个字节表示,每个字节分别表示R、G、B通道的值(红绿蓝)、组合成实际颜色。

这段程序就是遍历像素点,每种颜色按权值运算,转换为1个字节的灰度值(256级灰度),关键就是这句:

buf2[x] = (BYTE)(011buf[i] + 059buf[i+1] + 030buf[i+2]);

原型

int WINAPI icePub_getImgfilePColor(char strImgFilename,int x,int y,char strR,char strG,char strB,int flag)

输入:strImgFilename 待处理的文件名

x x坐标

y y坐标

flag 输出RGB值的格式,0 10进制,1 16进制

输出:strR R值

strG G值

strB B值

返回码:0 OK;-2 x,y值超出长宽

int retCode=-1;

char strR[128],strG[128],strB[128];

Cstring m_mem;

typedef int (WINAPI ICEPUB_GETIMGFILEPCOLOR)(char strImgFilename,int x,int y,char strR,char strG,char strB,int flag);

ICEPUB_GETIMGFILEPCOLOR icePub_getImgfilePColor = 0;

HINSTANCE hDLLDrv = LoadLibrary("icePubDlldll");

if(hDLLDrv)

icePub_getImgfilePColor = (ICEPUB_GETIMGFILEPCOLOR )GetProcAddress(hDLLDrv, "icePub_getImgfilePColor");

if(icePub_getImgfilePColor)

retCode=icePub_getImgfilePColor("ajpg",100,55,strR,strG,strB,0);

if(hDLLDrv)

FreeLibrary(hDLLDrv);

if(retCode == 0)

m_memFormat("(x,y):%d,%d\r\nR:%s\r\nG:%s\r\nB:%s",pointx,pointy,strR,strG,strB);

AfxMessageBox(m_mem);

原型:

int WINAPI icePub_imgToFileTextdata(char strImgFilename,char strFilename,char strFenge,int flag)

输入:strImgFilename 待处理图像文件 (会被强制256级灰度化)

strFilename 待生成BMP文本数据文件名

strFenge 列之间分隔符

flag 文本数据格式标志:0 10进制; 1 16进制; 10 RGB16进制

输出:

extern "C"

{

__declspec(dllexport)

int WINAPI icePub_imgToFileTextdata(char strImgFilename,char strFilename,char strFenge,int flag);

}

#pragma comment(lib,"icePubDlllib")

icePub_imgToFileTextdata("ajpg","bmpdatatxt",",",0);

原型:

char WINAPI icePub_getBufferFromImg2(char strImgFilename,int width,int height,int huiGrade)

输入:strImgFilename 文件名

huiGrade 图像灰度化标志,0 no; >1 and <=256 灰度级

输出:width 图像宽度

height 图像高度

返回值:图像的点阵数据(按照24位BMP格式)

extern "C"

{

__declspec(dllexport)

char WINAPI icePub_getBufferFromImg2(char strImgFilename,int width,int height,int huiGrade);

}

#pragma comment(lib,"icePubDlllib")

char bmpBuffer=NULL;

int imgWidth, imgHeight;

bmpBuffer = icePub_getBufferFromImg2 ("e:\\ajpg",&imgWidth,&imgHeight,0);

//然后对bmpBuffer数据处理即可

if(bmpBuffer != NULL)

free(bmpBuffer);

以上就是关于关于vc将图片进行灰度化的程序原理全部的内容,包括:关于vc将图片进行灰度化的程序原理、怎样用C语言得到jpeg格式或BMP格式的图像的像素的rgb值、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10217017.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存