您好,匿名用户
随意问技术百科期待您的加入

SSH中在action中压缩图片的大小

0 投票

因为整个系统中需要显示用户一个40*40的小头像,还有一个300*330的大头像,所以就想在用户上传头像时,先把用户上传的源图片,保存起来,经相对路径的形式保存在user类的srcphoto属性中,然后写了一个方法cutImage

public static String cutImage(String srcPath, int width, int height)
			throws IOException {
		File srcFile = new File(srcPath);
		System.out.print(srcFile.exists());
		BufferedImage image = ImageIO.read(srcFile);
		int srcWidth = image.getWidth(null);
		int srcHeight = image.getHeight(null);
		int newWidth = 0, newHeight = 0;
		int x = 0, y = 0;
		double scale_w = (double) width / srcWidth;
		double scale_h = (double) height / srcHeight;
		System.out.println("scale_w=" + scale_w + ",scale_h=" + scale_h);
		// 按原比例缩放图片
		if (scale_w < scale_h) {
			newHeight = height;
			newWidth = (int) (srcWidth * scale_h);
			x = (newWidth - width) / 2;
		} else {
			newHeight = (int) (srcHeight * scale_w);
			newWidth = width;
			y = (newHeight - height) / 2;
		}
		BufferedImage newImage = new BufferedImage(newWidth, newHeight,
				BufferedImage.TYPE_INT_RGB);
		newImage.getGraphics().drawImage(
				image.getScaledInstance(newWidth, newHeight,
								Image.SCALE_SMOOTH), 0, 0, null);
		// 保存缩放后的图片
		String fileSufix = srcFile.getName().substring(
				srcFile.getName().lastIndexOf(".") + 1);
		File destFile = new File(srcFile.getParent(), UUID.randomUUID()
				.toString()
				+ "." + fileSufix);
		// ImageIO.write(newImage, fileSufix, destFile);
		// 保存裁剪后的图片
		ImageIO.write(newImage.getSubimage(x, y, width, height), fileSufix,
				destFile);
		return  UUID.randomUUID().toString()+ "." + fileSufix;
	}

但是将user.srcphoto作为参数传递给此方法时,总是报Can't read input file! 不知道什么原因?

用户头像 提问 2012年 12月1日 @ dongxl 上等兵 (120 威望)
分享到:

你的回答

隐私保护: 您的邮箱仅用于发送系统通知。
请输入验证码:
    图片验证码看不清?
登录注册后不会被要求输入验证码。

提一个问题:

相关问题

+2 投票
1 回复 369 阅读
0 投票
1 回复 34 阅读
用户头像 提问 2012年 12月1日 @ Dionysus 上等兵 (229 威望)
0 投票
0 回复 26 阅读
用户头像 提问 2012年 12月1日 @ Mordekaiser 上等兵 (232 威望)
0 投票
1 回复 26 阅读
用户头像 提问 2013年 12月20日 @ Vladimir 上等兵 (275 威望)
0 投票
1 回复 37 阅读
用户头像 提问 2012年 12月1日 @ Artemis 上等兵 (162 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...