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());
        }
    随笔看心情
  • 相关阅读:
    Codeforces Round #443 Div. 1
    linux中ps命令
    占cpu 100%的脚本
    检查Linux系统cpu--内存---磁盘的脚本
    jQuery对象的属性操作
    关于js的一些收集
    Linux命令集合
    使用python操作excel表格
    Linux7.3系统 升级python到3.6使用ping主机脚本
    一个别人的线程池的编写
  • 原文地址:https://www.cnblogs.com/stromgao/p/12091173.html
Copyright © 2011-2022 走看看