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);

}

相关推荐
Elaine3362 天前
【验证码识别算法性能对比实验系统——KNN、SVM、CNN 与多模态大模型的性能博弈与机理分析】
python·opencv·支持向量机·cnn·多模态·数字图像处理
啊阿狸不会拉杆17 天前
《数字图像处理》实验2-空间域灰度变换与滤波处理
图像处理·人工智能·机器学习·计算机视觉·数字图像处理
啊阿狸不会拉杆17 天前
《数字图像处理》实验6-图像分割方法
图像处理·人工智能·算法·计算机视觉·数字图像处理
啊阿狸不会拉杆17 天前
《数字图像处理》-实验1
图像处理·人工智能·算法·计算机视觉·数字图像处理
啊阿狸不会拉杆17 天前
《数字图像处理》实验3-频率域处理方法
图像处理·人工智能·算法·计算机视觉·数字图像处理
啊阿狸不会拉杆17 天前
《数字图像处理》实验8-图像识别与分类
图像处理·人工智能·算法·分类·数据挖掘·数字图像处理
啊阿狸不会拉杆17 天前
《数字图像处理》实验7-图像特征提取
图像处理·人工智能·机器学习·计算机视觉·数字图像处理
啊阿狸不会拉杆17 天前
《数字图像处理》实验4-图像复原
图像处理·人工智能·机器学习·计算机视觉·数字图像处理
啊阿狸不会拉杆20 天前
《数字图像处理》第 11 章 - 特征提取
图像处理·人工智能·算法·计算机视觉·数字图像处理
啊阿狸不会拉杆24 天前
《数字图像处理》第 5 章-图像复原与重建
图像处理·人工智能·算法·matlab·数字图像处理