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