位图缩放:位图的缩放

给定个位图如何将它缩放至任意尺寸? 
很明显思路方法是:放大时在像素中间添加些重复像素使图像拉宽;缩小时把部分像素删除掉使图像收缩但是如何确定哪些像素该重复哪些像素该删除呢? 

下面给出思路方法是我自已想也许不是很专业哪位有更好思路方法观迎来信 
  
我们只考虑水平方向(垂直方向跟水平方向是同样道理)下面先从简单例子来说最后再推出个通用算法: 

A.若要放大1倍应将每个像素都重复N个像素变成了2N个像素图像放大为2倍这个不难; 

B.若要缩小1/2应该每隔个像素删除个像素2N个像素变成了N个像素图像缩小这个也不难; 

C.若要放大1.5倍如何办?假设原有2N个像素现在欲变成3N个像素须添加N个像素所以应对原图每隔个像素添加个重复像素: 

按此在新窗口浏览图片p1




上面算法只是水平缩放单行像素对垂直方向也采用同样算法便实现了任意比例位图缩放 

经过以上算法处理放大时图像出现马赛克缩小时图像出现闪砾若要获得高质量缩放图形须采用插值、过滤等技术但是这些技术所需计算量太大在游戏中通常靠硬件加速来实现不宜软件Software解决 
Tags:  位图的特点 位图与矢量图的区别 位图缩放算法 位图缩放

延伸阅读

最新评论

发表评论