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

}

相关推荐
Uncertainty!!2 个月前
数字图像处理:图像分割应用
数字图像处理·阈值分割法·区域生长法·边缘检测法
爱奔跑的虎子2 个月前
FPGA图像处理之均值滤波
图像处理·matlab·fpga开发·fpga·数字图像处理·vivao
Uncertainty!!3 个月前
数字图像处理:空间域滤波
数字图像处理·中值滤波·均值滤波·空间域滤波·高斯滤波
Uncertainty!!3 个月前
数字图像处理:边缘检测
数字图像处理·sobel算子·roberts算子·prewitt算子·laplace算子·log算子·dog算子
imblackcat3 个月前
【科研小小白】理解图片容量、像素、尺寸、分辨率各自含义、 像素、分辨率与实际尺寸之间的转换关系
python·数字图像处理·传统数字图像处理算法
无敌海苔咪5 个月前
实验四 图像增强—灰度变换之直方图变换
图像处理·计算机视觉·matlab·数字图像处理
无敌海苔咪6 个月前
实验六 图像的傅立叶变换
图像处理·算法·计算机视觉·matlab·数字图像处理
是瑶瑶子啦6 个月前
【计算机视觉】数字图像处理基础:以像素为单位的图像基本运算(点运算、代数运算、逻辑运算、几何运算、插值)
计算机视觉·数字图像处理·数字图像·点运算·代数运算·插值算法
???/cy7 个月前
数字图像处理系列 | 线性滤波(高斯滤波)(3)
人工智能·深度学习·数字图像处理
???/cy7 个月前
数字图像处理系列 | 非线性滤波 (4)
人工智能·计算机视觉·数字图像处理·非线性滤波