dib位图的缩放.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
问题:关于dib位图的缩放。? 谁有关于dib位图的缩放的代码,可以共享一下吗。 我的邮箱,bleakoasis@126.com。收到代码后 立即结帖。 提问时间:2006-4-10 14:55:13 回答次数:(7) 提问人:软界网友 我来回答 回答(1) StrechBlt() 回答人:软界网友 我来回答 回答(2) StrechBlt() 回答人:软界网友 我来回答 回答(3) 好好查查 strechbie函数的用法,这个东西缩放很简单的。 回答人:软界网友 我来回答 回答(4) 好好查查 strechbie函数的用法,这个东西缩放很简单的。 回答人:软界网友 我来回答 回答(5) 是在说DIB方法的缩放吧 随便找本图像处理的书都有,网上也有很多的 我没有源码,实际用的时候这些算法对于稍大点的图来说,效率很低 不知道你在做什么用,若是想在程序中处理图像的话,那就StrechBlt上去,再把处理完的位图采回来,然后保存就行 如果就是想放大,然后写成文件的话,那用DIB的也无妨,做个线程做后台处理就行 回答人:软界网友 我来回答 回答(6) 是在说DIB方法的缩放吧 随便找本图像处理的书都有,网上也有很多的 我没有源码,实际用的时候这些算法对于稍大点的图来说,效率很低 不知道你在做什么用,若是想在程序中处理图像的话,那就StrechBlt上去,再把处理完的位图采回来,然后保存就行 如果就是想放大,然后写成文件的话,那用DIB的也无妨,做个线程做后台处理就行 回答人:软界网友 我来回答 回答(7) 谢谢各位提供的方法。 回答人:软界网友 我来回答 回答(8) 谢谢各位提供的方法。 回答人:软界网友 我来回答 回答(9) 我随便写了一段代码,有点乱,风格也不太好,效率也不高,纯属练习之作,凑合着看吧,我也是新手,千万别见笑:) 这个代码只支持8位和24位BMP图像。 BBirdlyh(BBird) 仁兄说的有道理,这个随便在网上一搜就有大量的原理和方法,实现起来也不是很困难。 所谓放缩就是将图像放大缩小,可以用最近邻点法和双线性插值法进行插值。最邻近插值简单 且直观,但得到的图像质量不高。双线性插值法计算量大,但缩放后图像质量高,不会出现像素值不连续的情况。 我的放缩算法采取双线性插值法。 1、8位图像的放缩 xZoom、yZoom分别是x,y方向的放大率,则放缩后得到位图新的宽度与高度如下: lNewWidth = lWidth * xZoom ; lNewHeight = lHeight * yZoom ; 某一点(i0,j0)经过放大缩小后其位置变为(i,j),则有: i0 = i / xZoom; j0 = j / yZoom; 此处为浮点型运算。 将运算后的坐标带入双线性插值的函数即可。 2、24位位图的放缩 我开始做的双线性插值函数是针对8位图像的,由于8位位图一个像素占一个字节,而24位位图一个像素占三个字节,因此,24位位图双线性插值需要修改,原理是相同的,将R,G,B三个分量分解出来分别做双线性插值即可。 3、双线性插值法(bilinear interpolation approach) 我简单把公式写出来吧,具体的原理你到网上去搜,有大量的资料。 对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v),其中i、j均为非负整数,u、v为[0,1]区间的浮点数,则这个像素的值 f(i+u,j+v) 可由源图像中坐标为 (i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即: f(i+u,j+v) = (1-u)(1-v)f(i,j) + (1-u)vf(i,j+1) + u(1-v)f(i+1,j) + uvf(i+1,j+1) 代码如下 LPBYTE Zoom(LPBITMAPINFOHEADER lpBMPHdr,LPBYTE lpDIBits,long lWidth,long lHeight,long bitcount,float xZoom,float yZoom) { long i,j,k; float i0,j0; long lNewWidth; long lNewHeight; long ii,jj; long lW = (((lWidth*bitcount+31)5)2); long lNewW,lNewH; LPBYTE lpDst; LPBYTE lpSrc; LPBYTE lpNewDIBits; lNewWidth = lWidth * xZoom + 0.5; lNewHeight = lHeight * yZoom + 0

文档评论(0)

phl805 + 关注
实名认证
文档贡献者

建筑从业资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2023年05月12日上传了建筑从业资格证

1亿VIP精品文档

相关文档