谁有用java awt 做的,图片旋转90度功能的代码哦,请发给我一份哦,谢谢

解决方案 »

  1.   

    参考
    http://blog.csdn.net/lj_6891zz/archive/2009/02/03/3859350.aspx
      

  2.   


    好你只有Graphics 2d 里才有  不熟悉 
      

  3.   

    参考 
    http://blog.csdn.net/lj_6891zz/archive/2009/02/03/3859350.aspx,
    通过坐标进行操作
      

  4.   

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */package learning;/**
     *
     * @author Administrator
     */
    import java.applet.*;
    import java.awt.*;
    import java.awt.geom.*;
    import javax.imageio.*;
    import java.io.*;
    public class ImageTest extends Applet{
        private Image image;
        AffineTransform at = new AffineTransform();    public void init(){
         //文件位置
         String filename ="C:/Users/Administrator/Documents/NetBeansProjects/JavaApplication3/src/learning/car.png";
         //文件读入
         try{image =ImageIO.read(new File(filename));}
         catch (IOException e){e.printStackTrace();}
    }
        public void paint(Graphics g){
            Graphics2D g2D = (Graphics2D) g;        int width = image.getHeight(this);        int height = image.getHeight(this);        g2D.setColor(Color.BLACK);
            
            g2D.fillRect(0,0,getSize().width,getSize().height);        AffineTransform trans = new AffineTransform();        trans.setToIdentity();        //坐标变换
            trans.translate(width/2,height/2);        trans.scale(1,1);        //旋转90度
           trans.rotate(Math.toRadians(90));       trans.translate(-width/2,-height/2);       g2D.drawImage(image ,trans ,this);    }}
      

  5.   

      public void rotateJ2D(BufferedImage bufferedImage, int rad)
      {
        int width = bufferedImage.getWidth();
        int height = bufferedImage.getHeight();
        BufferedImage dstImage = null;
        AffineTransform affineTransform = new AffineTransform();
        if (rad == 90)
        {
          affineTransform.translate(height, 0.0D);
          dstImage = new BufferedImage(height, width, bufferedImage.getType());
          affineTransform.rotate(Math.toRadians(rad));
        }
        else if (rad == 180)
        {
          affineTransform.translate(width, height);
          dstImage = new BufferedImage(width, height, bufferedImage.getType());
          affineTransform.rotate(Math.toRadians(rad));
        }
        else if (rad == 270)
        {
          affineTransform.translate(0.0D, width);
          dstImage = new BufferedImage(height, width, bufferedImage.getType());
          affineTransform.rotate(Math.toRadians(rad));
        }
        else if (rad == -90)
        {
          affineTransform.translate(0.0D, width);
          dstImage = new BufferedImage(height, width, bufferedImage.getType());
          affineTransform.rotate(Math.toRadians(rad));
        }
        else if (rad == -180)
        {
          affineTransform.translate(width, height);
          dstImage = new BufferedImage(width, height, bufferedImage.getType());
          affineTransform.rotate(Math.toRadians(rad));
        }
        else if (rad == -270)
        {
          affineTransform.translate(height, 0.0D);
          dstImage = new BufferedImage(height, width, bufferedImage.getType());
          affineTransform.rotate(Math.toRadians(rad));
        }
        AffineTransformOp affineTransformOp = new AffineTransformOp(affineTransform, 
          1);
        BufferedImage newImage = affineTransformOp.filter(bufferedImage, dstImage);
        this.bufedImgSrc = newImage;
        if (this.normalSize)
        {
          this.image = newImage.getScaledInstance(-1, this.defaultHeight, 16);
          this.labIcon.setIcon(new ImageIcon(this.image));
        }
        else
        {
          this.image = newImage.getScaledInstance(-1, this.modifyHeight, 16);
          this.labIcon.setIcon(new ImageIcon(this.image));
        }
      }
      

  6.   

    参考
    http://blog.csdn.net/wangshu3000/archive/2007/05/05/1597235.aspx
    变换Graphics的原点 进行旋转
          Graphics2D g2 = (Graphics2D)g;
          g2.drawImage(img,0,0,null);//画原图
          g2.translate(getWidth() / 2, getHeight() / 2);//平移坐标轴,将原点移到组件中心
          g2.transform(t);//设置仿射变换
             /* we don't use setTransform because we want
                to compose with the current translation
             */
          g2.drawImage(img,-50,-50,null);//在新坐标系中画图像 
      

  7.   

    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.Insets;
    import java.awt.MediaTracker;
    import java.awt.Toolkit;
    import java.awt.geom.AffineTransform;
    import java.awt.geom.Point2D;
    import java.awt.image.AffineTransformOp;
    import java.awt.image.BufferedImage;
    import java.awt.image.BufferedImageOp;import javax.swing.JFrame;/**
     * 图像旋转45度
     */
    public class RotateImage45Degrees extends JFrame {
    private Image inputImage; private BufferedImage sourceBI; private BufferedImage destinationBI = null; private Insets frameInsets; private boolean sizeSet = false; public RotateImage45Degrees(String imageFile) {
    addNotify();
    frameInsets = getInsets();
    inputImage = Toolkit.getDefaultToolkit().getImage(imageFile); MediaTracker mt = new MediaTracker(this);
    mt.addImage(inputImage, 0);
    try {
    mt.waitForID(0);
    } catch (InterruptedException ie) {
    } sourceBI = new BufferedImage(inputImage.getWidth(null), inputImage
    .getHeight(null), BufferedImage.TYPE_INT_ARGB); Graphics2D g = (Graphics2D) sourceBI.getGraphics();
    g.drawImage(inputImage, 0, 0, null); AffineTransform at = new AffineTransform(); // scale image
    at.scale(2.0, 2.0); // rotate 45 degrees around image center
    at.rotate(45.0 * Math.PI / 180.0, sourceBI.getWidth() / 2.0, sourceBI
    .getHeight() / 2.0); /*
     * translate to make sure the rotation doesn't cut off any image data
     */
    AffineTransform translationTransform;
    translationTransform = findTranslation(at, sourceBI);
    at.preConcatenate(translationTransform); // instantiate and apply affine transformation filter
    BufferedImageOp bio;
    bio = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR); destinationBI = bio.filter(sourceBI, null); int frameInsetsHorizontal = frameInsets.right + frameInsets.left;
    int frameInsetsVertical = frameInsets.top + frameInsets.bottom;
    setSize(destinationBI.getWidth() + frameInsetsHorizontal, destinationBI
    .getHeight()
    + frameInsetsVertical);
    show();
    } /*
     * find proper translations to keep rotated image correctly displayed
     */
    private AffineTransform findTranslation(AffineTransform at, BufferedImage bi) {
    Point2D p2din, p2dout; p2din = new Point2D.Double(0.0, 0.0);
    p2dout = at.transform(p2din, null);
    double ytrans = p2dout.getY(); p2din = new Point2D.Double(0, bi.getHeight());
    p2dout = at.transform(p2din, null);
    double xtrans = p2dout.getX(); AffineTransform tat = new AffineTransform();
    tat.translate(-xtrans, -ytrans);
    return tat;
    } public void paint(Graphics g) {
    if (destinationBI != null)
    g.drawImage(destinationBI, frameInsets.left, frameInsets.top, this);
    } public static void main(String[] args) {
    new RotateImage45Degrees("D:/image/axe.jpg");
    }}