- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA图像缩放处理
/kinkding/archive/2009/05/23/277552.htmlJAVA图像缩放处理 今天在网上看到了一篇关于JAVA图像处理的文章,博主贴出了一个处理类:特点是高品质缩小,具体代码如下:import?java.awt.image.BufferedImage;import?java.io.File;import?java.io.FileOutputStream;import?java.io.IOException;import?javax.imageio.ImageIO;public?class?ImageScale?{?private?int?width;?private?int?height;?private?int?scaleWidth;?double?support?=?(double)?3.0;?double[]?contrib;?double[]?normContrib;?double[]?tmpContrib;?int?startContrib,?stopContrib;?int?nDots;?int?nHalfDots;?public?BufferedImage?imageZoomOut(BufferedImage?srcBufferImage,?int?w,?int?h,?boolean?lockScale)?{?width?=?srcBufferImage.getWidth();?height?=?srcBufferImage.getHeight();?scaleWidth?=?w;?if?(lockScale)?{?h?=?w?*?height?/?width;?}?if?(DetermineResultSize(w,?h)?==?1)?{?return?srcBufferImage;?}?CalContrib();?BufferedImage?pbOut?=?HorizontalFiltering(srcBufferImage,?w);?BufferedImage?pbFinalOut?=?VerticalFiltering(pbOut,?h);?return?pbFinalOut;?}?/**?*?决定图像尺寸?*/?private?int?DetermineResultSize(int?w,?int?h)?{?double?scaleH,?scaleV;?scaleH?=?(double)?w?/?(double)?width;?scaleV?=?(double)?h?/?(double)?height;?//?需要判断一下scaleH,scaleV,不做放大操作?if?(scaleH?=?1.0??scaleV?=?1.0)?{?return?1;?}?return?0;?}?//?end?of?DetermineResultSize()?private?double?Lanczos(int?i,?int?inWidth,?int?outWidth,?double?Support)?{?double?x;?x?=?(double)?i?*?(double)?outWidth?/?(double)?inWidth;?return?Math.sin(x?*?Math.PI)?/?(x?*?Math.PI)?*?Math.sin(x?*?Math.PI?/?Support)?/?(x?*?Math.PI?/?Support);?}?//?end?of?Lanczos()?//?//?Assumption:?same?horizontal?and?vertical?scaling?factor?//?private?void?CalContrib()?{?nHalfDots?=?(int)?((double)?width?*?support?/?(double)?scaleWidth);?nDots?=?nHalfDots?*?2?+?1;?try?{?contrib?=?new?double[nDots];?normContrib?=?new?double[nDots];?tmpContrib?=?new?double[nDots];?}?catch?(Exception?e)?{?System.out.println(init?contrib,normContrib,tmpContrib?+?e);?}?int?center?=?nHalfDots;?contrib[center]?=?1.0;?double?weight?=?0.0;?int?i?=?0;?for?(i?=?1;?i?=?center;?i++)?{?contrib[center?+?i]?=?Lanczos(i,?
文档评论(0)