您的位置:

java旋转图片,java获取图片旋转角度

本文目录一览:

如何使用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 怎么让一个图形绕一个点旋转360度

import java.awt.Canvas;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.RenderingHints;

import java.awt.image.BufferedImage;

 

/**

 * @author ZhengYesheng

 */

public class RotateImageCanvas extends Canvas implements Runnable

{

    private static final long serialVersionUID = -1997487731464495923L;

 

    BufferedImage img;

    BufferedImage rotatedImg;

 

    int degress = 0;

 

    public RotateImageCanvas(BufferedImage img)

    {

        super();

        this.img = img;

        new Thread(this).start();

    }

 

    @Override

    public void run()

    {

        while (true)

        {

            //A,与B的代码配合决定旋转的速度

            degress += 1;

            degress %= 360;

            repaint();

            try

            {

                if (degress == 0)

                {

                    //绕一周后等待的时间在这里设置

                    Thread.sleep(3 * 1000);

                }

                else

                {

                    //考虑到视觉平滑,这里不应大约40。

                    Thread.sleep(30);

                }

            }

            catch (InterruptedException e)

            {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

    }

 

    @Override

    public void paint(Graphics graphics)

    {

        super.paint(graphics);

        //获取旋转指定角度后的图片。为了避免累计误差,这里是用原始图像旋转的

        rotatedImg = rotateImage(img, degress);

        //绘制旋转后的图片

        graphics.drawImage(rotatedImg, 0, 0, this);

    }

 

    /**

     * 旋转图片为指定角度。

     * 注意:1、这个方法实现了图像的基于中点的旋转,要想绕指定点,需要配合Matrix类

     *          2、为避免图像被裁切,结果图片的尺寸也需要动态计算

     *          3、现在旋转后有黑色背景,如果不需要这个效果,需要设置结果图片的Alpha模式

     * 

     * @param bufferedimage

     *            目标图像

     * @param degree

     *            旋转角度

     * @return

     */

    private BufferedImage rotateImage(BufferedImage bufferedimage, int degree)

    {

        int w = bufferedimage.getWidth();

        int h = bufferedimage.getHeight();

        int type = bufferedimage.getColorModel().getTransparency();

        BufferedImage img;

        Graphics2D graphics2d;

        (graphics2d = (img = new BufferedImage(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();

        return img;

    }

}

java实现图片旋转90度的问题

类Graphics2D的方法rotate(double theta, double x,

double y)可以用来旋转图片

利用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,也可以直接设置仿射变换矩阵,利用这点就可以根据所需要的实现方式来进行描绘.

java旋转图片,java获取图片旋转角度

2022-11-28
Android图片旋转详解

2023-05-18
java图片失真问题,如何解决图片失真

2022-11-18
php图片旋转问题(php图片旋转问题大全)

2022-11-09
Vue图片旋转全面解读

2023-05-17
java矩阵旋转代码(数字旋转方阵java)

2022-11-14
图片验证码的java实现,图片验证码的java实现方式

2022-11-19
掌握Android旋转动画的方法

2023-05-20
java实现点击图片文字验证码,java图片验证码工具类

2022-11-19
sw如何旋转草图,sw旋转草图图片

2023-01-05
方块旋转java(方块旋转连萌)

2022-11-11
3dmax怎么做旋转图,3dmax的旋转

2022-12-02
java生成图片,java生成图片表格自动换行

2023-01-06
ug怎么做异形旋转实体,ug旋转实体成片体

2023-01-06
Android图片旋转:如何让您的图像更具吸引力

2023-05-14
cad怎样把图片旋转水平,CAD平面图怎么旋转

2022-11-26
js自动旋转代码,js3d旋转

本文目录一览: 1、如何实现Three.js中的模型世界轴旋转和自旋转 2、js代码怎么让一张图片自动360度水平旋转 3、js实现图片旋转效果 4、js设置图片随机旋转角度 5、怎样用js和css令

2023-12-08
canvasjs图片(canvas绘制一张图片)

本文目录一览: 1、用HTML5中canvas加js代码把下面这张图片绘制出釆 2、为什么我用js创建的image在canvas里显示不出来? 3、HTML5、JS的canvas绘制图片的问题。。 4

2023-12-08
solidworks零件旋转指定角度,solidworks怎

2023-01-03
ug12工程图如何旋转,ug12视图旋转

2022-12-02