「java同步旋转多张图片」java多图叠放合成一张
本篇文章给大家谈谈java同步旋转多张图片,以及java多图叠放合成一张对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java里面添加图片,并对图片进行翻转处理
- 2、java 如何实现多张图片按一个坐标点旋转 旋转后位置不会错乱
- 3、如何使用java旋转图片
- 4、java两个图片如何按照两个旋转点旋转?
- 5、java实现图片旋转90度的问题
- 6、请教一下,Java线程让图片一直旋转的问题
java里面添加图片,并对图片进行翻转处理
(注,下面的(x,y)就是你的图片所有的点围绕旋转的中心,为(0,0)即为绕原点进行旋转
当然是用矩阵啦,左乘一个三阶矩阵
(cosA, -sinA, x,sinA, cosA, y,0, 0 , s)
其中a代表你要旋转的角度 ;旋转变幻(绕原点,绕其他点直接平移即可)即为 X’ = X * cosA - Y * sinA; Y' = X * sinA + Y * cosA;
可以用极坐标轻松证明之,建议你自己推导一遍,,,,,,
(x,y)代表平移的坐标,不平移就为0, s代表缩放的倍数,,不缩放为1;
如果不会用矩阵或者不想用的话就直接用上面那个给出的公式进行变幻,,,,,,
还是用矩阵吧,,方便一点。。。。
java 如何实现多张图片按一个坐标点旋转 旋转后位置不会错乱
我认为图片啥的定位主要看你的layout设置成null 并且在定时器中设置好旋转控制函数。如果你的算法正确的话 位置自然不会错了。
如何使用java旋转图片
废话不多说直接上代码:
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;
}
}
java两个图片如何按照两个旋转点旋转?
int a=0,b=0;//原点
Sin和Cos函数,可以得到圆上所有点,写个例子给你
int r=250;//半径
int time=0;
while(true)
{
time++;
int h = (Math.PI / 180) * 6 * times;
int X = a + Math.sin(h) * r;
int Y = b - Math.cos(h) * r;
}
X和Y是坐标
int类型可能会出问题,转换一下就行了
java实现图片旋转90度的问题
类Graphics2D的方法rotate(double theta, double x,
double y)可以用来旋转图片
请教一下,Java线程让图片一直旋转的问题
你开一个线程改变坐标,在新线程里repaint,在paint方法里画图,事件监听,paint,paintComponent等这些方法都是gui线程,不能执行耗时任务,更不能放个死循环进去。
java同步旋转多张图片的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java多图叠放合成一张、java同步旋转多张图片的信息别忘了在本站进行查找喔。
发布于:2022-11-25,除非注明,否则均为
原创文章,转载请注明出处。