una rotar que objetos mueva mover linea imagen hacer graficos grados girar figuras como java image swing graphics2d

java - rotar - Voltear imagen con Graphics2D



rotar imagen java netbeans (5)

He estado tratando de averiguar cómo voltear una imagen por un tiempo, pero no lo he averiguado todavía.

Estoy usando Graphics2D para dibujar una Image con

g2d.drawImage(image, x, y, null)

Solo necesito una forma de voltear la imagen en el eje horizontal o vertical.

Si lo desea, puede echar un vistazo a la fuente completa en github .


De http://examples.javacodegeeks.com/desktop-java/awt/image/flipping-a-buffered-image :

// Flip the image vertically AffineTransform tx = AffineTransform.getScaleInstance(1, -1); tx.translate(0, -image.getHeight(null)); AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); image = op.filter(image, null); // Flip the image horizontally tx = AffineTransform.getScaleInstance(-1, 1); tx.translate(-image.getWidth(null), 0); op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); image = op.filter(image, null); // Flip the image vertically and horizontally; equivalent to rotating the image 180 degrees tx = AffineTransform.getScaleInstance(-1, -1); tx.translate(-image.getWidth(null), -image.getHeight(null)); op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); image = op.filter(image, null);


La forma más fácil de voltear la imagen es escalarla negativamente. Ejemplo:

g2.drawImage(image, x + width, y, -width, height, null);

Eso lo volteará horizontalmente. Esto lo volteará verticalmente:

g2.drawImage(image, x, y + height, width, -height, null);


Necesitas saber el ancho y el alto de la imagen para asegurarte de que esté correctamente escalada:

int width = image.getWidth(); int height = image.getHeight();

Entonces, necesitas dibujarlo:

//Flip the image both horizontally and vertically g2d.drawImage(image, x+(width/2), y+(height/2), -width, -height, null); //Flip the image horizontally g2d.drawImage(image, x+(width/2), y-(height/2), -width, height, null); //Flip the image vertically g2d.drawImage(image, x-(width/2), y+(height/2), width, -height, null);

Así es como lo hago, de todos modos.


Puede usar una transformación en sus Graphics , que debe rotar la imagen bien. A continuación se muestra un código de ejemplo que puede utilizar para lograr esto:

AffineTransform affineTransform = new AffineTransform(); //rotate the image by 45 degrees affineTransform.rotate(Math.toRadians(45), x, y); g2d.drawImage(image, m_affineTransform, null);


Girar la imagen vertical 180 grados

File file = new File(file_Name); FileInputStream fis = new FileInputStream(file); BufferedImage bufferedImage = ImageIO.read(fis); //reading the image file AffineTransform tx = AffineTransform.getScaleInstance(-1, -1); tx.translate(-bufferedImage.getWidth(null), -bufferedImage.getHeight(null)); AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); bufferedImage = op.filter(bufferedImage, null); ImageIO.write(bufferedImage, "jpg", new File(file_Name));