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,也可以直接設置仿射變換矩陣,利用這點就可以根據所需要的實現方式來進行描繪.