zoukankan      html  css  js  c++  java
  • java旋转图片

    /**
         * 旋转图片
         * @param image
         * @param degree
         * @param bgcolor
         * @return
         * @throws IOException
         */
        private InputStream rotateImg(BufferedImage image, int degree, Color bgcolor) throws IOException {
            int iw = image.getWidth();//原始图象的宽度
            int ih = image.getHeight();//原始图象的高度
            int w = 0;
            int h = 0;
            int x = 0;
            int y = 0;
            degree = degree % 360;
            if (degree < 0)
                degree = 360 + degree;//将角度转换到0-360度之间
            double ang = Math.toRadians(degree);//将角度转为弧度
    
            /**
             *确定旋转后的图象的高度和宽度
             */
    
            if (degree == 180 || degree == 0 || degree == 360) {
                w = iw;
                h = ih;
            } else if (degree == 90 || degree == 270) {
                w = ih;
                h = iw;
            } else {
                int d = iw + ih;
                w = (int) (d * Math.abs(Math.cos(ang)));
                h = (int) (d * Math.abs(Math.sin(ang)));
            }
    
            x = (w / 2) - (iw / 2);//确定原点坐标
            y = (h / 2) - (ih / 2);
            BufferedImage rotatedImage = new BufferedImage(w, h, image.getType());
            Graphics2D gs = (Graphics2D) rotatedImage.getGraphics();
            if (bgcolor == null) {
                rotatedImage = gs.getDeviceConfiguration().createCompatibleImage(w, h, Transparency.TRANSLUCENT);
            } else {
                gs.setColor(bgcolor);
                gs.fillRect(0, 0, w, h);//以给定颜色绘制旋转后图片的背景
            }
    
            AffineTransform at = new AffineTransform();
            at.rotate(ang, w / 2, h / 2);//旋转图象
            at.translate(x, y);
            AffineTransformOp op = new AffineTransformOp(at, AffineTransformOp.TYPE_BICUBIC);
            op.filter(image, rotatedImage);
            image = rotatedImage;
    
            ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
            ImageOutputStream imageOut = ImageIO.createImageOutputStream(byteOut);
            ImageIO.write(image, "png", imageOut);
            return new ByteArrayInputStream(byteOut.toByteArray());
        }
    随笔看心情
  • 相关阅读:
    Table XXX is marked as crashed and should be repaired问题
    冗余带来的麻烦
    thinkPHP模板引擎案例
    css案例学习之float浮动
    css案例学习之父子块的margin
    block,inline和inline-block概念和区别
    css案例学习之div与span的区别
    css案例学习之盒子模型
    css案例学习之层叠样式
    css案例学习之继承关系
  • 原文地址:https://www.cnblogs.com/stromgao/p/12091173.html
Copyright © 2011-2022 走看看