java 图片旋转

来源:互联网 发布:mac开机密码忘记了 编辑:程序博客网 时间:2024/05/17 23:50
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;}}

挺好用的,收藏
原创粉丝点击