java图片旋转
⑴ java drawImage 如何实现旋转和缩放
这个函数可以缩放,不能旋转。头四个数是画到什么地方,后四个数是画那幅图的哪个部分,也就是可以光画图的一半等等。
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
AffineTransform at = new AffineTransform();
double angle = Math.PI;
at.rotate(angle);
int transX = 100;
int transY = 100;
at.translate(transX, transY);
Image img = new BufferedImage();
g2.drawImage(img, at, null);
}
⑵ 如何使用java旋转图片
废话不多说直接上代码:
importjava.awt.Color;
importjava.awt.Graphics2D;
importjava.awt.Transparency;
importjava.awt.geom.AffineTransform;
importjava.awt.image.AffineTransformOp;
importjava.awt.image.BufferedImage;
importjava.io.ByteArrayInputStream;
importjava.io.ByteArrayOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjavax.imageio.ImageIO;
importjavax.imageio.stream.ImageOutputStream;
publicclassImageChange{
(BufferedImageimage,intdegree,Colorbgcolor)throwsIOException{
intiw=image.getWidth();//原始图象的宽度
intih=image.getHeight();//原始图象的高度
intw=0;
inth=0;
intx=0;
inty=0;
degree=degree%360;
if(degree<0)
degree=360+degree;//将角度转换到0-360度之间
doubleang=Math.toRadians(degree);//将角度转为弧度
/**
*确定旋转后的图象的高度和宽度
*/
if(degree==180||degree==0||degree==360){
w=iw;
h=ih;
}elseif(degree==90||degree==270){
w=ih;
h=iw;
}else{
intd=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);
BufferedImagerotatedImage=newBufferedImage(w,h,image.getType());
Graphics2Dgs=(Graphics2D)rotatedImage.getGraphics();
if(bgcolor==null){
rotatedImage=gs.getDeviceConfiguration().createCompatibleImage(w,h,Transparency.TRANSLUCENT);
}else{
gs.setColor(bgcolor);
gs.fillRect(0,0,w,h);//以给定颜色绘制旋转后图片的背景
}
AffineTransformat=newAffineTransform();
at.rotate(ang,w/2,h/2);//旋转图象
at.translate(x,y);
AffineTransformOpop=newAffineTransformOp(at,AffineTransformOp.TYPE_BICUBIC);
op.filter(image,rotatedImage);
image=rotatedImage;
ByteArrayOutputStreambyteOut=newByteArrayOutputStream();
ImageOutputStreamiamgeOut=ImageIO.createImageOutputStream(byteOut);
ImageIO.write(image,"png",iamgeOut);
InputStreaminputStream=newByteArrayInputStream(byteOut.toByteArray());
returninputStream;
}
}
⑶ java图像旋转失去质量问题,怎么解决
使用的几个类
Graphics2d
AffineTransform
BufferedImage
- BufferedImage bufferedImage = ImageUtil.getImageByPath("bg.png");
- Graphics2D g2d = bufferedImage.createGraphics();
- g2d.rotate(Math.toRadians(90), bufferedImage.getWidth() >> 1, bufferedImage.getHeight() >> 1);
- g2d.dispose();1234
- BufferedImage bufferedImage = ImageUtil.getImageByPath("bg.png");
- AffineTransform tx = new AffineTransform();
- tx.rotate(0.5, bufferedImage.getWidth() / 2, bufferedImage.getHeight() / 2);
- AffineTransformOp op = new AffineTransformOp(tx,
- AffineTransformOp.TYPE_BILINEAR);
- bufferedImage = op.filter(bufferedImage, null);
1. Graphics2d 方式
利用Graphics2d的rotate方法来实现图片旋转,奇怪的是一直不生效,实现代码如下
2.AffineTransform方式
⑷ java怎么做图片旋转3D立体效果
<style type="text/css">
#show{position:relative;margin:20px auto;width:800px;}
.item{position:absolute;height:40px;width:60px;background:#999999;border:1px solid #eeeeee;cursor:pointer;}</style>
input id="l" type="button" value="left" /> <input id="r" type="button" value="right" />
<div id="show">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">0</div>
<div class="item">a</div>
<div class="item">b</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
<script>
var len;
var showerObj;
var listObj;
var showerWidth=800;
var showerHeight=400;
var r;
var cR=0;
var ccR=0;
var timer=0;
window.onload=function(){
showerObj=document.getElementById("show");
listObj=showerObj.getElementsByTagName("div");
len=listObj.length;
r=Math.PI/180*360/len;
for(var i=0;i<len;i++){
var item=listObj[i];
item.style.top=showerHeight/2+Math.sin(r*i)*showerWidth/2-20+"px";
item.style.left=showerWidth/2+Math.cos(r*i)*showerWidth/2-30+"px";
item.rotate=(r*i+2*Math.PI)%(2*Math.PI);
item.onclick=function(){
cR=Math.PI/2-this.rotate;
timer || (timer=setInterval(rotate,10));
}
}
var rX=showerObj.offsetLeft+showerWidth/2;
var ry=showerObj.offsetTop+showerHeight/2;
var rotate=function(){
ccR=(ccR+2*Math.PI)%(2*Math.PI);
if(cR-ccR<0) cR=cR+2*Math.PI;
if(cR-ccR<Math.PI){
ccR=ccR+(cR-ccR)/19;
}else{
ccR=ccR-(2*Math.PI+ccR-cR)/19;
}
if(Math.abs((cR+2*Math.PI)%(2*Math.PI)-(ccR+2*Math.PI)%(2*Math.PI))<Math.PI/720){
ccR=cR;
clearInterval(timer);
timer=0;
}
for(var i=0;i<len;i++){
var item=listObj[i];
var w,h;
var sinR=Math.sin(r*i+ccR);
var cosR=Math.cos(r*i+ccR);
w=60+0.6*60*sinR;
h=(40+0.6*40*sinR);
item.style.cssText +=";width:"+w+"px;height:"+h+"px;top:"+parseInt(showerHeight/2+sinR*showerWidth/2/3-w/2)+"px;left:"+parseInt(showerWidth/2+cosR*showerWidth/2-h/2)+"px;z-index:"+parseInt(showerHeight/2+sinR*showerWidth/2/3-w/2)+";";
}
}
document.getElementById("l").onclick=function(){
cR=(cR+r+2*Math.PI)%(2*Math.PI);
timer || (timer=setInterval(rotate,10));
}
document.getElementById("r").onclick=function(){
cR=(cR-r+2*Math.PI)%(2*Math.PI);
timer || (timer=setInterval(rotate,10));
}
rotate();
}
</script>
⑸ 如何使用Java旋转PDF文档中的图像
一般是用PDF编辑器旋转的,java好像很高级的样子
打开迅捷PDF编辑器,旋转页面是在文档下面,
找到就可以旋转了,选择逆时针旋转90度,
就可以将PDF文件弄好,最后在文件下面选择保存下。希望可以帮助到楼主。
方法就分享到这里
⑹ 毕业设计:基于java的256色bmp图像旋转
首先请你自备一个java的api文档,有利于你查阅相应方法的使用
给你一个思路吧,
1. java提供了一个ImageIO的类用于读入图片,在这个类里有一个静态的read方法
可以将图片转化为一个BufferedImage对象,在BufferedImage类里有相应的方法可以得到图片结构的数据。
2. 显示图片以及旋转:比如说你要将图片显示在一个JPanel上,先调用getGraphics方法得到Graphics对象,然后把它强制转换成Graphics2D对象,去Graphics2D的类里找找吧,里面有旋转画图片的方法。
3. 写入文件: 这个没想到怎么弄,呵呵
4. 进行45 、135旋转 Graphics2D里有一个rotate方法可以旋转指定角度
⑺ java 怎么让一个图形绕一个点旋转360度
- importjava.awt.Canvas;
- importjava.awt.Graphics;
- importjava.awt.Graphics2D;
- importjava.awt.RenderingHints;
- importjava.awt.image.BufferedImage;
- /**
- *@authorZhengYesheng
- */
- {
- =-1997487731464495923L;
- BufferedImageimg;
- BufferedImagerotatedImg;
- intdegress=0;
- publicRotateImageCanvas(BufferedImageimg)
- {
- super();
- this.img=img;
- newThread(this).start();
- }
- @Override
- publicvoidrun()
- {
- while(true)
- {
- //A,与B的代码配合决定旋转的速度
- degress+=1;
- degress%=360;
- repaint();
- try
- {
- if(degress==0)
- {
- //绕一周后等待的时间在这里设置
- Thread.sleep(3*1000);
- }
- else
- {
- //考虑到视觉平滑,这里不应大约40。
- Thread.sleep(30);
- }
- }
- catch(InterruptedExceptione)
- {
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }
- }
- @Override
- publicvoidpaint(Graphicsgraphics)
- {
- super.paint(graphics);
- //获取旋转指定角度后的图片。为了避免累计误差,这里是用原始图像旋转的
- rotatedImg=rotateImage(img,degress);
- //绘制旋转后的图片
- graphics.drawImage(rotatedImg,0,0,this);
- }
- /**
- *旋转图片为指定角度。
- *注意:1、这个方法实现了图像的基于中点的旋转,要想绕指定点,需要配合Matrix类
- *2、为避免图像被裁切,结果图片的尺寸也需要动态计算
- *3、现在旋转后有黑色背景,如果不需要这个效果,需要设置结果图片的Alpha模式
- *
- *@parambufferedimage
- *目标图像
- *@paramdegree
- *旋转角度
- *@return
- */
- (BufferedImagebufferedimage,intdegree)
- {
- intw=bufferedimage.getWidth();
- inth=bufferedimage.getHeight();
- inttype=bufferedimage.getColorModel().getTransparency();
- BufferedImageimg;
- Graphics2Dgraphics2d;
- (graphics2d=(img=newBufferedImage(w,h,type)).createGraphics())
- .setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
- graphics2d.rotate(Math.toRadians(degree),w/2,h/2);
- graphics2d.drawImage(bufferedimage,0,0,null);
- graphics2d.dispose();
- returnimg;
- }
- }
⑻ java实现图片旋转90度的问题
类Graphics2D的方法rotate(double theta, double x,
double y)可以用来旋转图片
⑼ 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实现图片翻转的代码
重载渲染控件的paintComponent(Graphics
g)方法.
设你当前图像实例为img,已初始化,需要旋转的角度为ang
public
void
paintComponent(Graphics
g){
super.paintCompoent(g);
Graphics2D
g2d
=
(Graphics2D)g;
g2d.rotate(-angle);
g2d.drawImage(img,0,0,this.getWidth(),this.getHeight(),null);
}
Graphics,Graphics2D
类中有对当前描绘环境进行仿射变换的方法,包括translate,scale,rotate,也可以直接设置仿射变换矩阵,利用这点就可以根据所需要的实现方式来进行描绘.