当前位置:编程学习 > JAVA >>

java实现图片旋转90度

怎么用java写一个图片旋转90、180、270、360度的函数,并将旋转后的图片用JLabel显示来,求各位路过的大神指点,以下是我之前写的代码,无论怎么修改都有问题,图片旋转90度后只显示部分,具体请看图:第一张是旋转前:第二张是旋转90度后:麻烦大神帮忙解决,已经被这个问题纠结了几天时间了,一直修改不出来,今晚就要交了
radius += Math.PI / 2;
try{
File f = new File(fpath+imagename);//根据路径和文件名创建文件对象;
             Image image = ImageIO.read(f)
             ImageIcon ico = null;
             AffineTransform trans = null;
        trans = new AffineTransform();
                        x = image.getWidth(null);
             y = image.getHeight(null);
        trans.rotate(radius,x/2 , y/2);
         BufferedImage buffer1 = new BufferedImage(x,y,BufferedImage.TYPE_INT_RGB);
            Graphics2D g2 = buffer1.createGraphics();
            g2.setTransform(trans);
            ico = new ImageIcon(buffer1);
            g2.drawImage(image,null,null);
            limage.setIcon(ico);//传入Label
                         
            }catch(Exception e) {
                e.printStackTrace();
            } java、90度、旋转 --------------------编程问答-------------------- bmp格式的还是jpg的
感觉bmp的也许会简单一点。
我测试下。 --------------------编程问答--------------------

public class Test2 extends JFrame{
public Test2() {
this.setSize(500, 500);
JLabel limage=new JLabel();
add(limage);
String path = "D://PP.jpg";
int x;
int y;

double radius = Math.PI / 2;
try {
File f = new File(path);// 根据路径和文件名创建文件对象;
Image image = ImageIO.read(f);
ImageIcon ico = null;
AffineTransform trans = null;
trans = new AffineTransform();
x = image.getWidth(null);
y = image.getHeight(null);
trans.rotate(radius, x / Math.PI, y/2);//就是这里这两个参数的问题,你在调一调。。。
BufferedImage buffer1 = new BufferedImage(y, x,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = buffer1.createGraphics();
g2.setTransform(trans);
ico = new ImageIcon(buffer1);
g2.drawImage(image, null, null);
limage.setIcon(ico);// 传入Label

} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Test2().show();
}

}

效果:
还不是太好,你在调调
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,