Je cherche depuis un moment à retourner une image, mais je ne l’ai pas encore compris.
J'utilise Graphics2D
pour dessiner une Image
avec
g2d.drawImage(image, x, y, null)
J'ai juste besoin d'un moyen de retourner l'image sur l'axe horizontal ou vertical.
Si vous voulez, vous pouvez jeter un oeil au full source sur 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);
Le le plus simple _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _————————————————————————————————————————————————————————
g2.drawImage(image, x + width, y, -width, height, null);
Cela le retournera horizontalement. Cela le retournera verticalement:
g2.drawImage(image, x, y + height, width, -height, null);
Vous pouvez utiliser une transformation sur votre Graphics
, qui devrait parfaitement faire pivoter l'image. Vous trouverez ci-dessous un exemple de code que vous pouvez utiliser pour cela:
AffineTransform affineTransform = new AffineTransform();
//rotate the image by 45 degrees
affineTransform.rotate(Math.toRadians(45), x, y);
g2d.drawImage(image, m_affineTransform, null);
Vous devez connaître la largeur et la hauteur de l'image pour vous assurer qu'elle est correctement mise à l'échelle:
int width = image.getWidth(); int height = image.getHeight();
Ensuite, vous devez le dessiner:
//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);
C'est comme ça que je le fais, de toute façon.
Faire pivoter l'image à la verticale de 180 degrés
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));