回 帖 发 新 帖 刷新版面

主题:利用ScanLine读取灰度图像的像素

我想将一幅bmp灰度图象的像素值利用ScanLine读出来并存储到数组中,请问该怎样实现啊?  又该怎样利用读出来的像素值将图像重新显示出来呢?

回复列表 (共2个回复)

沙发


hehe,方法可行,一定加分~!!最好用例子说明一下~

板凳

我碰到过这个问题,我是用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++];
   }
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册