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

}

相关推荐
程序员Linc4 天前
了解图像质量评价指标PSNR
数字图像处理·psnr·图像质量评价
程序员Linc5 天前
《数字图像处理》第三章 3.7 混合空间增强法笔记:原理、实现与Python实战
开发语言·笔记·python·数字图像处理·混合空间增强
程序员Linc5 天前
《数字图像处理》第四章 频率域滤波简要学习笔记以及频率域滤波与空间域滤波的区别
笔记·学习·数字图像处理·频率域滤波
程序员Linc7 天前
《数字图像处理》第三章 3.8 基于模糊技术的图像强度变换与空间滤波学习笔记
笔记·学习·数字图像处理·模糊技术·强度变换·空间滤波
程序员Linc13 天前
《数字图像处理》第三章3.3直方图处理学习笔记
笔记·python·数字图像处理·直方图
Uncertainty!!5 个月前
数字图像处理:图像分割应用
数字图像处理·阈值分割法·区域生长法·边缘检测法
爱奔跑的虎子5 个月前
FPGA图像处理之均值滤波
图像处理·matlab·fpga开发·fpga·数字图像处理·vivao
Uncertainty!!6 个月前
数字图像处理:空间域滤波
数字图像处理·中值滤波·均值滤波·空间域滤波·高斯滤波
Uncertainty!!6 个月前
数字图像处理:边缘检测
数字图像处理·sobel算子·roberts算子·prewitt算子·laplace算子·log算子·dog算子
imblackcat6 个月前
【科研小小白】理解图片容量、像素、尺寸、分辨率各自含义、 像素、分辨率与实际尺寸之间的转换关系
python·数字图像处理·传统数字图像处理算法