• java 图片旋转


    转载自:http://blog.csdn.net/mengfei86/article/details/6821553

    import java.awt.Color;
    import java.awt.Graphics2D;
    import java.awt.Transparency;
    import java.awt.geom.AffineTransform;
    import java.awt.image.AffineTransformOp;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    import javax.imageio.ImageIO;
    import javax.imageio.stream.ImageOutputStream;
    
    public class ImageChange {
    
    	public static 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 iamgeOut = ImageIO.createImageOutputStream(byteOut);
    		
    		ImageIO.write(image, "png", iamgeOut);
    		InputStream  inputStream = new ByteArrayInputStream(byteOut.toByteArray());
    		
    		return inputStream;
    	}
    	
    	
    }
    


  • 相关阅读:
    elasticsearch配置文件详解
    《禅的故事》--易中天
    《爱你就像爱生命》--王小波
    Adaboost算法及其代码实现
    HOG特征原理及代码实现
    SMO算法--SVM(3)
    非线性支持向量机SVM
    核方法-核技巧-核函数
    线性可分支持向量机与软间隔最大化--SVM(2)
    拉格朗日乘子(Lagrange multify)和KKT条件
  • 原文地址:https://www.cnblogs.com/java20130723/p/3212144.html
Copyright © 2020-2023  润新知