8-图像放大

其实,就是开辟一个zoomwidth,zoomheight的内存,再分别赋值即可。

void CDib::Maginify(float xZoom, float yZoom)

{

//指向原图像指针

LPBYTE p_data = GetData();

//指向原像素的指针

LPBYTE lpSrc;

//指向缩放图像对应像素的指针

LPBYTE lpDst ;

//像素在原DIB的坐标

LONG i;

LONG j;

//循环变量(像素在新图中的坐标)

LONG i0;

LONG j0;

//图像的宽和高

LONG width = GetWidth();

LONG height = GetHeight();

//计算放缩后的图像宽度和高度

LONG newWidth = (LONG)(width * xZoom + 0.5);

LONG newHeight = (LONG)(height * yZoom + 0.5);

LONG newLineBytes = (newWidth * 8 + 31) / 32 * 4;

//暂时分配内存,以保存新图像

LPBYTE temp1 = new BYTE[newWidth * newHeight];

memset(temp1, (BYTE)255, newWidth * newHeight);

int r, g, b;

for (int i = 0; i < newWidth; i++)

{

for (int j = 0; j < newHeight; j++)

{

lpDst = (LPBYTE)temp1 + newWidth * j + i;

int i0 = (i / xZoom + 0.5);

int j0 = (j / yZoom + 0.5);

if ((i0 >=0 ) && ( i0 < width) && (j0 >= 0) && (j0 < height))

{

lpSrc = (LPBYTE)p_data + width * j0 + i0;

*lpDst = *lpSrc;

}

}

}

m_pData = temp1;

m_pBitmapInfoHeader->biWidth = newWidth;

m_pBitmapInfoHeader->biHeight = newHeight;

}

构造函数调用

CMy1_showbitmapView::CMy1_showbitmapView()

{

_cdib.LoadFile ("D:/Test/DataProcess/result.bmp");

_cdib.Maginify(2.0, 2.0);

}

相关推荐
啊阿狸不会拉杆3 天前
《数字图像处理》第 5 章-图像复原与重建
图像处理·人工智能·算法·matlab·数字图像处理
啊阿狸不会拉杆4 天前
《数字图像处理》第7章:小波变换和其他图像变换
图像处理·人工智能·python·算法·机器学习·计算机视觉·数字图像处理
啊阿狸不会拉杆4 天前
《数字图像处理》第8章-图像压缩和水印
图像处理·人工智能·算法·计算机视觉·数字图像处理
啊阿狸不会拉杆5 天前
《数字图像处理》第 6 章 - 彩色图像处理
图像处理·人工智能·opencv·算法·计算机视觉·数字图像处理
啊阿狸不会拉杆7 天前
《数字图像处理》第 3 章 - 灰度变换与空间滤波
图像处理·人工智能·算法·计算机视觉·数字图像处理
啊阿狸不会拉杆7 天前
《数字图像处理 》 第 1 章-绪论
图像处理·python·opencv·算法·数字图像处理
啊阿狸不会拉杆7 天前
《数字图像处理》第 4 章 - 频率域滤波
图像处理·人工智能·算法·机器学习·数字图像处理
啊阿狸不会拉杆7 天前
《数字图像处理》第2章-数字图像基础
图像处理·python·算法·计算机视觉·数字图像处理
茜茜西西CeCe2 个月前
数字图像处理-图像的形态学处理(2)
计算机视觉·图像分割·数字图像处理·图像的形态学处理·顶帽变换·图像细化
茜茜西西CeCe2 个月前
数字图像处理-图像编码与压缩
人工智能·计算机视觉·matlab·数字图像处理·图像压缩·图像编码