public List<Integer> uploadPic() throws IOException {
		List<Integer> picIds = new ArrayList<Integer>();
		HttpServletRequest request = getRequest();
		HttpServletResponse response = getResponse();
		getResponse().setCharacterEncoding("UTF-8");
		PrintWriter pw = response.getWriter();
		FileOutputStream fos = null;
		FileInputStream fis = null;
		try {
		
			
			savePath = ServletActionContext.getServletContext().getRealPath(
					"/upload");
			File f1 = new File(savePath);
			File f2= new File(savePath+"/mid");
			File f3= new File(savePath+"/small");
			if (!f1.exists()) {
				f1.mkdirs();
			}
			if (!f2.exists()){
				f2.mkdirs();
				
			}
			if (!f3.exists()){
				f3.mkdirs();
			}
			for (int i = 0; i < image.length; i++) {
				
				PicInfo	picInfo=new PicInfo();				
				String urlAppend = System.currentTimeMillis() + "_"
						+ getImageFileName()[i];// +picInfo.getPicName();
				String picPath = savePath + "/" + urlAppend;
				fos = new FileOutputStream(picPath);
				fis = new FileInputStream(getImage()[i]);
				
				byte[] buffer = new byte[1024];
				int len = 0;
				while ((len = fis.read(buffer)) != -1) {
					fos.write(buffer, 0, len);
				}
				close(fos, fis);
				// 1:上传成功
				picInfo.setPicUrl("/upload/" + urlAppend);
				// ---------------------------1.1 转移到hadoop--------------
				// String hdfsBaseUrl=commonSevice.getParaByCode("hdfsBaseUrl");
				// HdfsUtil.uploadFile(picPath,hdfsBaseUrl+"/"+urlAppend);

				// 2：提交PicInfo
				picInfo.setHilifeId(bankOwer.getId());
				picInfo.setPicName(getImageFileName()[i]);
				int picId = resourceService.savePicInfo(picInfo);
				picIds.add(picId);
				// 3：返回picId
				// pw.write("{success:true, msg:\'文件上传成功\',picId:\'"+picId+"\'}");


				//#############以下处理原图，中图，小图#################
				File freal=new File(picPath);
				File fmid=new File(savePath+"/mid/" + urlAppend);
				File fsmall=new File(savePath+"/small/" + urlAppend);
				
				BufferedImage breal =ImageIO.read(freal); //读取原始图片
				int realWidth= breal.getWidth();// 原图像的长度   
                int realHeight = breal.getHeight();// 原图像的宽度   
                double picscale = (double)realWidth/realHeight;
                int midHeight=700;
                int midWidth=(int)(picscale*midHeight);
                int smallHeight=200;
                int smallWidth=(int)(picscale*smallHeight);
                
                /*
                AffineTransform 类表示 2D 仿射变换，它执行从 2D 坐标到其他 2D
                坐标的线性映射，保留了线的“直线性”和“平行性”。可以使用一系
                列平移、缩放、翻转、旋转和剪切来构造仿射变换。
                */
                AffineTransform transformMid = new AffineTransform();               
                double mx = (double)midWidth/realWidth;
                double my = (double)midHeight/realWidth;
                transformMid.setToScale(mx,my); //setToScale(double sx, double sy) 将此变换设置为缩放变换。
                
                AffineTransform transformSmall = new AffineTransform();               
                double sx = (double)smallWidth/realWidth;
                double sy = (double)smallHeight/realWidth;
                transformSmall.setToScale(sx,sy); //setToScale(double sx, double sy) 将此变换设置为缩放变换。
                //System.out.println(w + " " +h);
                /*
                 * AffineTransformOp类使用仿射转换来执行从源图像或 Raster 中 2D 坐标到目标图像或
                 *  Raster 中 2D 坐标的线性映射。所使用的插值类型由构造方法通过
                 *  一个 RenderingHints 对象或通过此类中定义的整数插值类型之一来指定。
                如果在构造方法中指定了 RenderingHints 对象，则使用插值提示和呈现
                的质量提示为此操作设置插值类型。要求进行颜色转换时，可以使用颜色
                呈现提示和抖动提示。 注意，务必要满足以下约束：源图像与目标图像
                必须不同。 对于 Raster 对象，源图像中的 band 数必须等于目标图像中
                的 band 数。
                */
                AffineTransformOp atoMid = new AffineTransformOp(transformMid,null);
                AffineTransformOp atoSmall = new AffineTransformOp(transformSmall,null);
                BufferedImage bmid = new BufferedImage(midWidth,midHeight,BufferedImage.TYPE_3BYTE_BGR);
                BufferedImage bsmall = new BufferedImage(smallWidth,smallHeight,BufferedImage.TYPE_3BYTE_BGR);
                
                
                
                /*
                 * 测试
                 * TYPE_3BYTE_BGR 表示一个具有 8 位 RGB 颜色分量的图像，
                 * 对应于 Windows 风格的 BGR 颜色模型，具有用 3 字节存
                 * 储的 Blue、Green 和 Red 三种颜色。
                */
                atoMid.filter(breal,bmid);
                atoSmall.filter(breal,bsmall);
                ImageIO.write(bmid,"jpeg",fmid);
                ImageIO.write(bsmall,"jpeg",fsmall); 
			}
			return picIds;
		} catch (Exception e) {
			//pw.write("{success:false, msg:\'文件上传失败\'}");
			e.printStackTrace();
		} finally {
			close(fos, fis);
			return picIds;
		}

	}