java rotate

作者:原创时间:2022-04-18
文档

java rotate是什么?让我们一起来了解一下吧!

java rotate是java中的旋转。java中图片有分为竖直位置摆放和水平位置摆放的。如果需要把图片位置进行调整,首先要取得图片的信息,然后进行旋转。

我们可以将Java rotate分为以下几个:

1、图片进行翻转,其中包括水平翻转以及垂直翻转。

2、图片进行各个角度旋转。我们根据不同的需要,可以对这个值进行变动,达到自己满意的效果。

3、应用组合进行操作,比如说水平翻转+旋转,或者垂直+水平+旋转,任意。

实战演练,具体步骤如下:

/**
 
* 图像旋转
 
* @param src
 
* @param angel
 
* @return
 
*/
 
public static BufferedImage Rotate(Image src, double angel) {undefined
 
int src_width = src.getWidth(null);
 
int src_height = src.getHeight(null);
 
// calculate the new image size
 
Rectangle rect_des = CalcRotatedSize(new Rectangle(new Dimension(
 
src_width, src_height)), angel);
 
BufferedImage res = null;
 
res = new BufferedImage(rect_des.width, rect_des.height,
 
BufferedImage.TYPE_3BYTE_BGR);
 
Graphics2D g2 = res.createGraphics();
 
// transform
 
g2.translate((rect_des.width - src_width) / 2,
 
(rect_des.height - src_height) / 2);
 
g2.rotate(Math.toRadians(angel), src_width / 2, src_height / 2);
 
g2.drawImage(src, null, null);
 
return res;
 
}
 
public static Rectangle CalcRotatedSize(Rectangle src, double angel) {undefined
 
// if angel is greater than 90 degree, we need to do some conversion
 
if (angel >= 90) {undefined
 
if(angel / 90 % 2 == 1){undefined
 
int temp = src.height;
 
src.height = src.width;
 
src.width = temp;
 
}
 
angel = angel % 90;
 
}
 
double r = Math.sqrt(src.height * src.height + src.width * src.width) / 2;
 
double len = 2 * Math.sin(Math.toRadians(angel) / 2) * r;
 
double angel_alpha = (Math.PI - Math.toRadians(angel)) / 2;
 
double angel_dalta_width = Math.atan((double) src.height / src.width);
 
double angel_dalta_height = Math.atan((double) src.width / src.height);
 
int len_dalta_width = (int) (len * Math.cos(Math.PI - angel_alpha
 
- angel_dalta_width));
 
len_dalta_width=len_dalta_width>0?len_dalta_width:-len_dalta_width;
 
int len_dalta_height = (int) (len * Math.cos(Math.PI - angel_alpha
 
- angel_dalta_height));
 
len_dalta_height=len_dalta_height>0?len_dalta_height:-len_dalta_height;
 
int des_width = src.width + len_dalta_width * 2;
 
int des_height = src.height + len_dalta_height * 2;
 
des_width=des_width>0?des_width:-des_width;
 
des_height=des_height>0?des_height:-des_height;
 
return new java.awt.Rectangle(new Dimension(des_width, des_height));
 
}

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
java rsa加密 java path java paypal java phoenix java ping java pipeline java rsa公钥加密 java rsa私钥加密 java rtp java runnable java runtime.exec java rxjava java sandbox java script java selector java selenium java semaphore java separator java sequence java serializable java reverse java reverse() java retrofit java resume java resultset java result java rest java requests java partial java request java parser java repeat java parse java pandas java override java render java region java require java resolve java resources