概述
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
public final class ImageUtil {
// 图片缩放。
public static BufferedImage reSize(BufferedImage srcBufImage, int width,
int height) {
BufferedImage bufImg = new BufferedImage(width,
height, BufferedImage.TYPE_INT_RGB);
// 计算图片缩放比例
float widthBo = (float) width / (float) srcBufImage.getWidth();
float heightBo = (float) height / (float) srcBufImage.getHeight();
AffineTransform transform = new AffineTransform();
transform.setToScale(widthBo, heightBo);
// 根据原始图片生成处理后的图片。
//
AffineTransformOp ato = new AffineTransformOp(transform, null);
//
ato.filter(srcBufImage, bufImg);
Graphics2D g = (Graphics2D) bufImg.createGraphics();
g.drawImage(srcBufImage, transform, null);
g.dispose();
return bufImg;
}
}
根据要缩放的宽度和高度分别除以原图像的宽度和高度得到缩放比例。
创建BufferedImage,得到它的Graphics2D对象,然后调用Graphics2D的
public abstract boolean drawImage(Imageimg, AffineTransformxform, ImageObserverobs)
-
呈现一个图像,在绘制前进行从图像空间到用户空间的转换。从用户空间到设备空间的转换使用
Graphics2D
中当前的Transform
完成。在应用Graphics2D
上下文中的 transform 属性之前,指定的转换被应用到图像。应用的呈现属性包括Clip
、Transform
和Composite
属性。注意,如果指定的转换不可逆,则不会完成呈现。-
参数:
-
img
- 要呈现的指定图像。如果img
为 null,则此方法不执行任何动作。 -
xform
- 从图像空间到用户空间的转换 -
obs
- 转换了多个Image
时要通知的ImageObserver
-
将转换后的图像画到BufferedImage。
不知为何,
// AffineTransformOp ato = new AffineTransformOp(transform, null);
// ato.filter(srcBufImage, bufImg);
这样会报错:抛出ImagingOpException异常。
最后
以上就是无私咖啡为你收集整理的java图片缩放的全部内容,希望文章能够帮你解决java图片缩放所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复