主题:利用ScanLine读取灰度图像的像素
zxqlnmm
[专家分:40] 发布于 2007-10-12 18:24:00
我想将一幅bmp灰度图象的像素值利用ScanLine读出来并存储到数组中,请问该怎样实现啊? 又该怎样利用读出来的像素值将图像重新显示出来呢?
最后更新于:2007-10-13 18:06:00
回复列表 (共2个回复)
沙发
zxqlnmm [专家分:40] 发布于 2007-10-12 18:28:00
hehe,方法可行,一定加分~!!最好用例子说明一下~
板凳
bioexplore [专家分:440] 发布于 2007-10-21 10:10:00
我碰到过这个问题,我是用C++ builder实现的
首先定义一个TBitmap对象
Graphics::TBitmap bmp=new Graphics::TBitmap();
bmp->Assign(TImageObj->Picture->Graphic);//将一个TImage对象的图像付给bmp
BYTE* pPixel=NULL;
int* dataArray=new int[bmp->Height*bmp->Width];
int i=0;
//下面这段将图像保存为数组
for(int y=0;y<bmp->Height;y++)
{
pPixel=(BYTE*)bmp->ScanLine[y];
for(int x=0;x<bmp->Width*3;x+=3)
{
dataArray[i++]=pPixel[x];
}
}
//下面为将数组转化为图像
i=0;
for(int y=0;y<bmp->Height;y++)
{
pPixel=(BYTE*)bmp->ScanLine[y];
for(int x=0;x<bmp->width*3;x+=3)
{
pPixel[x+2]=pPixel[x+1]=pPixel[x]=dataArray[i++];
}
}
我来回复