java实现图片水平和垂直翻转效果

  

最近在做小型游戏,遇到了要翻转图片的苦恼,经过我一下午的研究,终于发现了一种好用的方法。

  

部分代码来源于别人,我在这个基础上修改了下,变得更好用了,之前的别输人图像入都是BufferedImage,我改成了形象,也就是加了一个转换。

  

大家如果看不懂代码没关系,会用就行了,我会展示一下怎么用的。

  

ImageRotate类         包mypackage;      进口javax.imageio.ImageIO;   进口java.awt。*;   进口java.awt.image.BufferedImage;   进口java.io.File;/* *   *作者Mythos_Q   *   *时间2011-07-20   *   *描述图片旋转,翻转处理   */公开课ImgRotate   {   静态int Up_Down_Reverse=0;   静态int Left_Right_Reverse=1;/* *   *旋转图片为指定角度   *   * @param bufferedimage   *目标图像   * @param程度   *旋转角度   * @return   */公共静态BufferedImage rotateImage(最终BufferedImage BufferedImage、最终int学位){   int w=bufferedimage.getWidth ();   int h=bufferedimage.getHeight ();   .getTransparency int类型=bufferedimage.getColorModel () ();   BufferedImage img;   Graphics2D Graphics2D;   (graphics2d=(img=new BufferedImage (h, w型)).createGraphics ()) .setRenderingHint (RenderingHints.KEY_INTERPOLATION RenderingHints.VALUE_INTERPOLATION_BILINEAR);   graphics2d.rotate (Math.toRadians(学位),w/2 h/2 + (w> h # 63; (w-h)/2: (h-w)/2));   graphics2d。drawImage (bufferedimage, 0, 0, null);   graphics2d.dispose ();   返回img;   }/* *   *旋转图片为指定角度   *   * @param文件   *目标图像   * @param程度   *旋转角度(90180270)   * @return   */公共静态文件rotateImage(文件文件,int学位){抛出异常   如果(程度==90)返回rotateImage90(文件);   如果(程度==180)返回rotateImage180(文件);   如果(程度==270)返回rotateImage270(文件);   返回null;   }   公共静态图像rotateImage(图片形象,int程度)   {   如果(程度==90)   返回rotateImage90(图片);   如果(程度==180)   返回rotateImage180(图片);   如果(程度==270)   返回rotateImage270(图片);   返回null;   }      私有静态图像rotateImage90图像(图片)   {   BufferedImage BufferedImage=ImageToBufferedImage(图片);   int w=bufferedimage.getWidth ();   int h=bufferedimage.getHeight ();   .getTransparency int类型=bufferedimage.getColorModel () ();   BufferedImage img;   Graphics2D Graphics2D;   (graphics2d=(img=new BufferedImage (h, w型)).createGraphics ()   ).setRenderingHint (RenderingHints.KEY_INTERPOLATION RenderingHints.VALUE_INTERPOLATION_BILINEAR);   graphics2d.rotate (Math.toRadians (270), w/2 h/2 + (w-h)/2);   graphics2d。drawImage (bufferedimage, 0, 0, null);   graphics2d.dispose ();      返回BufferedImageToImage (img);      }//左转90度   rotateImage90公共静态文件(文件文件)抛出异常   {   BufferedImage BufferedImage=ImageIO.read(文件);   int w=bufferedimage.getWidth ();   int h=bufferedimage.getHeight ();   .getTransparency int类型=bufferedimage.getColorModel () ();   BufferedImage img;   Graphics2D Graphics2D;   (graphics2d=(img=new BufferedImage (h, w型)).createGraphics ()   ).setRenderingHint (RenderingHints.KEY_INTERPOLATION RenderingHints.VALUE_INTERPOLATION_BILINEAR);   graphics2d.rotate (Math.toRadians (270), w/2 h/2 + (w-h)/2);   graphics2d。drawImage (bufferedimage, 0, 0, null);   graphics2d.dispose ();   ImageIO.write (img, jpg,文件);   返回文件;   }//右转90度   rotateImage270公共静态文件(文件文件)抛出异常   {   BufferedImage BufferedImage=ImageIO.read(文件);   int w=bufferedimage.getWidth ();   int h=bufferedimage.getHeight ();   .getTransparency int类型=bufferedimage.getColorModel () ();   BufferedImage img;   Graphics2D Graphics2D;   (graphics2d=(img=new BufferedImage (h, w型)).createGraphics ()) .setRenderingHint (RenderingHints.KEY_INTERPOLATION RenderingHints.VALUE_INTERPOLATION_BILINEAR);   graphics2d.rotate (Math.toRadians (90), w/2 - (w-h)/2 h/2);   graphics2d。drawImage (bufferedimage, 0, 0, null);   graphics2d.dispose ();   ImageIO.write (img, jpg,文件);   返回文件;   }      公共静态图像rotateImage270图像(图片)   {   BufferedImage BufferedImage=ImageToBufferedImage(图片);   int w=bufferedimage.getWidth ();   int h=bufferedimage.getHeight ();   .getTransparency int类型=bufferedimage.getColorModel () ();   BufferedImage img;   Graphics2D Graphics2D;   (graphics2d=(img=new BufferedImage (h, w型)).createGraphics ()) .setRenderingHint (RenderingHints.KEY_INTERPOLATION RenderingHints.VALUE_INTERPOLATION_BILINEAR);   graphics2d.rotate (Math.toRadians (90), w/2 - (w-h)/2 h/2);   graphics2d。drawImage (bufferedimage, 0, 0, null);   graphics2d.dispose ();      返回BufferedImageToImage (img);   }//对转   rotateImage180公共静态文件(文件文件)抛出异常   {   BufferedImage BufferedImage=ImageIO.read(文件);   int w=bufferedimage.getWidth ();   int h=bufferedimage.getHeight ();   .getTransparency int类型=bufferedimage.getColorModel () ();   BufferedImage img;   Graphics2D Graphics2D;   (graphics2d=(img=new BufferedImage (w h型)).createGraphics ()) .setRenderingHint (RenderingHints.KEY_INTERPOLATION RenderingHints.VALUE_INTERPOLATION_BILINEAR);   graphics2d.rotate (Math.toRadians (180), w/2 h/2);   graphics2d。drawImage (bufferedimage, 0, 0, null);   graphics2d.dispose ();   ImageIO.write (img, jpg,文件);   返回文件;   }   公共静态图像rotateImage180图像(图片)   {   BufferedImage BufferedImage=ImageToBufferedImage(图片);   int w=bufferedimage.getWidth ();   int h=bufferedimage.getHeight ();   .getTransparency int类型=bufferedimage.getColorModel () ();   BufferedImage img;   Graphics2D Graphics2D;   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

java实现图片水平和垂直翻转效果