java rotate 90_2

来源:互联网 发布:大学生网贷数据分析 编辑:程序博客网 时间:2024/06/11 15:30


转载

http://stackoverflow.com/questions/34459747/why-does-an-affine-rotation-in-90-270-degrees-not-preserve-correct-dimensions-b


import java.awt.geom.AffineTransform;import java.awt.image.AffineTransformOp;import java.awt.image.BufferedImage;import java.io.IOException;import java.net.URL;import javax.imageio.ImageIO;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JOptionPane;import javax.swing.SwingUtilities;publicclassTestAffineTransform{privatestaticfinalString IMG_PATH="https://upload.wikimedia.org/wikipedia/commons/thumb"+"/4/42/MerryOldSanta.jpg/220px-MerryOldSanta.jpg";privatestaticBufferedImage originalImg;publicstaticvoid main(String[] args){try{ URL imgUrl=new URL(IMG_PATH); originalImg=ImageIO.read(imgUrl);BufferedImage nextRotImg = transform(originalImg,1);final Icon originalIcon=newImageIcon(originalImg);finalIcon nextRotIcon=newImageIcon(nextRotImg);SwingUtilities.invokeLater(()->{JOptionPane.showMessageDialog(null, originalIcon);JOptionPane.showMessageDialog(null, nextRotIcon);});}catch(IOException e){ e.printStackTrace();System.exit(-1);}}publicstaticBufferedImage transform(BufferedImage image,int numquadrants){int w0= image.getWidth();int h0 = image.getHeight();int w1= w0;int h1= h0;int centerX= w0/2;int centerY= h0/2;if(numquadrants%2==1){ w1= h0; h1= w0;if(numquadrants%4==1){ centerX=Math.max(w0, h0)/2;}else{ centerX=Math.min(w0, h0)/2;} centerY= centerX;}AffineTransform affineTransform=newAffineTransform(); affineTransform.setToQuadrantRotation(numquadrants, centerX, centerY);AffineTransformOp opRotated= newAffineTransformOp(affineTransform,AffineTransformOp.TYPE_BILINEAR);BufferedImage transformedImage = newBufferedImage(w1, h1, image.getType()); opRotated.filter(image, transformedImage);return transformedImage;}}







http://www.oschina.net/code/snippet_1466630_44221

http://www.oschina.net/code/snippet_818200_45972

http://blog.livedoor.jp/mgsoft/archives/1007874070.html



0 0
原创粉丝点击