- //此代码是以缩放比例为参数值
- publicfinalBufferedImagegetResizePicture(BufferedImageoriginalPic,
- doublebo){
- //获得原始图片的宽度。
- intoriginalImageWidth=originalPic.getWidth();
- //获得原始图片的高度。
- intoriginalImageHeight=originalPic.getHeight();
- //根据缩放比例获得处理后的图片宽度。
- intchangedImageWidth=(int)(originalImageWidth*bo);
- //根据缩放比例获得处理后的图片高度。
- intchangedImageHeight=(int)(originalImageHeight*bo);
- //生成处理后的图片存储空间。
- BufferedImagechangedImage=newBufferedImage(changedImageWidth,
- changedImageHeight,BufferedImage.TYPE_3BYTE_BGR);
- //doublewidthBo=(double)yourWidth/originalImageWidth;
- //doubleheightBo=(double)yourHeightheight/originalImageHeight;
- //宽度缩放比例。
- doublewidthBo=bo;
- //高度缩放比例。
- doubleheightBo=bo;
- AffineTransformtransform=newAffineTransform();
- transform.setToScale(widthBo,heightBo);
- //根据原始图片生成处理后的图片。
- AffineTransformOpato=newAffineTransformOp(transform,null);
- ato.filter(originalPic,changedImage);
- //返回处理后的图片
- returnchangedImage;
- }
上面的方法有一点是需要解释的:缩放比例bo,可以整体的控制图片的缩放,不过也可以不按缩放,我们只要知道当前图片的宽度高度和原始图片的宽度和高度,就可以知道宽度和高度的缩放比例,既:
doubleheightBo=(double)yourHeightheight/originalImageHeight;
这样我就可以将图片缩放成任意的宽度和高度。但需要注意的是:图片缩放会造成图像画质的下降,还有就是图片尺寸如果过大会出现内存溢出,这里关于能处理的图片的最大尺寸,建议在编程时要自己多注意,我个人觉得2200px*2200px以后出现内存溢出的可能性比较大。