/**
  * 顺时针图片旋转的方法
  * 
  * @param request
  * @param response
  * @return  
  * @author julong 2013-8-29 下午09:12:47
  */
 public void pictureRotationClockwise(HttpServletRequest request,HttpServletResponse response,PhotoTemp2 pt2){
  response.setContentType("text/html; charset=GBK");
  //获取smid
  String smid = request.getParameter("smid");
  //System.out.println(smid);
  //获取原图片对象
  PhotoTemp2 photoTemp2 = this.photoTemp2Service.getZp(smid);
  //获取图片对象
  byte[] imgBtye  = photoTemp2.getZp();
  //获取输入字节流
  ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(imgBtye);
  //将byte数组转换为image对象  访问图像缓冲区的图像对象
  BufferedImage bufferedImage;
  PrintWriter out = null ;
    ExcuteResult result;
  try {
   //获得图片对象
   bufferedImage = ImageIO.read(byteArrayInputStream);
   //获得当前的图片的高度和宽度
   int thisHeight = bufferedImage.getHeight();
   int thisWidth = bufferedImage.getWidth();
   BufferedImage dstImage = null;
   //创建图片矩阵向量旋转对象类表示 
   //2D 仿射变换,它执行从 2D 坐标到其他 2D 坐标的线性映射,保留了线的“直线性”和“平行性”。可以使用一系列平移、缩放、翻转、旋转和剪切来构造仿射变换。
         AffineTransform affineTransform = new AffineTransform();
         //设置图像平移的距离
         //thisHeight - 坐标在 X 轴方向上平移的距离
         //0 - 坐标在 Y 轴方向上平移的距离
         affineTransform.translate(thisHeight, 0);
         //创建一个新的画布     
         //旋转后  thisHeight图像的宽度  thisWidth 图像的高度
            dstImage = new BufferedImage(thisHeight, thisWidth, bufferedImage.getType());
            //设置图片旋转的角度  是X轴正半轴 向Y轴正半轴 旋转的角度
            affineTransform.rotate(java.lang.Math.toRadians(90));
            //执行源图像的线性2D映射
            AffineTransformOp affineTransformOp = new AffineTransformOp(affineTransform,null);
            //转换图片对象为bufferedImage对象
            affineTransformOp.filter(bufferedImage, dstImage);
            // 创建字节输入流
   ByteArrayOutputStream byteArrayOutputStream =new ByteArrayOutputStream();
   ImageIO.write(dstImage, "JPEG", byteArrayOutputStream);
   //获取新图片的数组
   byte[] newImg = byteArrayOutputStream.toByteArray();
   photoTemp2.setZp(newImg);
   //执行更新操作
   result =  this.photoTemp2Service.updateDrvPhotoTempZP(photoTemp2); 
           
   out = response.getWriter();
   //System.err.println(result.getReturnCode());
   //判断数据库是否更新成功如果成功则执行刷新的方法
   if(1==result.getReturnCode()){ 
    out.println("<script style='javascript/text'>parent.rotationBack();</script>");
   }
      
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch(Exception e){
   e.printStackTrace();
  }finally{ 
   if(out!=null)out.close(); 
  }
  //return new ModelAndView("dagl/lsda_drv_imgList");
    
 } 
 /**
  * 图片逆时针旋转的方法
  * 
  * @param request
  * @param response
  * @param pt2
  * @author julong 2013-8-30 下午03:26:27
  */
 public void pictureRotationAntiClockwise(HttpServletRequest request,HttpServletResponse response,PhotoTemp2 pt2){
  response.setContentType("text/html; charset=GBK");
  //System.out.println("--------------------------------------------------------------------------");
  //获取smid
  String smid = request.getParameter("smid");
  //System.out.println(smid);
  //获取原图片对象
  PhotoTemp2 photoTemp2 = this.photoTemp2Service.getZp(smid);
  //获取图片对象
  byte[] imgBtye  = photoTemp2.getZp();
  //获取输入字节流
  ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(imgBtye);
  //将byte数组转换为image对象  访问图像缓冲区的图像对象
  BufferedImage bufferedImage;
  PrintWriter out = null ;
    ExcuteResult result;
  try {
   //获得图片对象
   bufferedImage = ImageIO.read(byteArrayInputStream);
   //获得当前的图片的高度和宽度
   int thisHeight = bufferedImage.getHeight();
   int thisWidth = bufferedImage.getWidth();
   BufferedImage dstImage = null;
   //创建图片矩阵向量旋转对象类表示 
   //2D 仿射变换,它执行从 2D 坐标到其他 2D 坐标的线性映射,保留了线的“直线性”和“平行性”。可以使用一系列平移、缩放、翻转、旋转和剪切来构造仿射变换。
         AffineTransform affineTransform = new AffineTransform();
         //设置图像平移的距离
         //0 - 坐标在 X 轴方向上平移的距离
         //thisWidth - 坐标在 Y 轴方向上平移的距离
         affineTransform.translate(0, thisWidth);
         //创建一个新的画布     
         //旋转后  thisHeight图像的宽度  thisWidth 图像的高度
            dstImage = new BufferedImage(thisHeight, thisWidth, bufferedImage.getType());
            //设置图片旋转的角度  是X轴正半轴 向Y轴正半轴 旋转的角度
            affineTransform.rotate(java.lang.Math.toRadians(270));
            //执行源图像的线性2D映射
            AffineTransformOp affineTransformOp = new AffineTransformOp(affineTransform,null);
            //转换图片对象为bufferedImage对象
            affineTransformOp.filter(bufferedImage, dstImage);
            // 创建字节输入流
   ByteArrayOutputStream byteArrayOutputStream =new ByteArrayOutputStream();
   ImageIO.write(dstImage, "JPEG", byteArrayOutputStream);
   //获取新图片的数组
   byte[] newImg = byteArrayOutputStream.toByteArray();
   photoTemp2.setZp(newImg);
   //执行更新操作
   result =  this.photoTemp2Service.updateDrvPhotoTempZP(photoTemp2); 
          
   out = response.getWriter();
   //System.err.println(result.getReturnCode());
   //判断数据库是否更新成功如果成功则执行刷新的方法
   if(1==result.getReturnCode()){ 
    out.println("<script style='javascript/text'>parent.rotationBack();</script>");
   }
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch(Exception e){
   e.printStackTrace();
  }finally{ 
   if(out!=null)out.close(); 
  }
 }

这种方式是图片从数据库中读出来  在旋转  后存入数据库中  测试成功  希望对您有所帮助