用java如何实现图像的缩放,旋转?最好给个代码

解决方案 »

  1.   

    关于缩放,不是很难的,说说原理吧
    其实也就是怎么显示的问题,或者说是显示的尺寸比例问题。
    所以在java中的jlabel上显示之前先把读进去的imageicon按比例
    icon = new ImageIcon(icon.getImage().getScaledInstance(“参数”),参数就是用来定义你的显示图形的尺寸的
      

  2.   

    import java.awt.geom.AffineTransform;
     AffineTransform t = new AffineTransform() ;
    t.rotate(double d) ;这个类里面一进提供了基本上所有的关于图像平移,旋转,缩放等功能,自己看看去
      

  3.   

    /**
         * 缩放 - 参数指定目标图缩放比例。
         * @param srcImage BufferedImage
         * @param xscale float
         * @param yscale float
         * @param hints RenderingHints
         * @return BufferedImage
         */
        public static BufferedImage scaleJ2D(BufferedImage srcImage,
                                             double xscale,
                                             double yscale,
                                             RenderingHints hints) {
            int width = (int) ((double) srcImage.getWidth() * xscale);
            int height = (int) ((double) srcImage.getHeight() * yscale);        AffineTransform affineTransform = new AffineTransform();
            affineTransform.scale(xscale, yscale);
            AffineTransformOp affineTransformOp = new AffineTransformOp(
                    affineTransform,
                    hints);        BufferedImage dstImage = new BufferedImage(width, height,
                    srcImage.getType());        return affineTransformOp.filter(srcImage, dstImage);
        }
      

  4.   

    public static final int J2D_ROTATE_90 = 90;
        public static final int J2D_ROTATE_180 = 180;
        public static final int J2D_ROTATE_270 = 270;
        /**
         * 旋转 - 参数指定目标图旋转角度。
         * @param bufferedImage BufferedImage
         * @param radian int
         * @param hints RenderingHints
         * @return BufferedImage
         */
        public static BufferedImage rotateJ2D(BufferedImage bufferedImage,
                                              int radian,
                                              RenderingHints hints) {
            int width = bufferedImage.getWidth();
            int height = bufferedImage.getHeight();        BufferedImage dstImage = null;
            AffineTransform affineTransform = new AffineTransform();        if (radian == 180) {
                affineTransform.translate(width, height);
                dstImage = new BufferedImage(width, height, bufferedImage.getType());
            } else if (radian == 90) {
                affineTransform.translate(height, 0);
                dstImage = new BufferedImage(height, width, bufferedImage.getType());
            } else if (radian == 270) {
                affineTransform.translate(0, width);
                dstImage = new BufferedImage(height, width, bufferedImage.getType());
            }        affineTransform.rotate(Math.toRadians(radian));
            AffineTransformOp affineTransformOp = new AffineTransformOp(
                    affineTransform,
                    hints);        return affineTransformOp.filter(bufferedImage, dstImage);
        }