java图片缩放

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(Image img,
                                  AffineTransform xform,
                                  ImageObserver obs)
呈现一个图像,在绘制前进行从图像空间到用户空间的转换。从用户空间到设备空间的转换使用 Graphics2D 中当前的 Transform 完成。在应用 Graphics2D 上下文中的 transform 属性之前,指定的转换被应用到图像。应用的呈现属性包括 ClipTransformComposite 属性。注意,如果指定的转换不可逆,则不会完成呈现。

参数:
img - 要呈现的指定图像。如果 img 为 null,则此方法不执行任何动作。
xform - 从图像空间到用户空间的转换
obs - 转换了多个 Image 时要通知的 ImageObserver
 

将转换后的图像画到BufferedImage。

 

不知为何,

// AffineTransformOp ato = new AffineTransformOp(transform, null);

// ato.filter(srcBufImage, bufImg);

这样会报错:抛出ImagingOpException异常。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值