AffineTransformOp qui zap des données [RESOLU] - Java - Programmation
Marsh Posté le 26-01-2004 à 11:06:37
C'est résolu. Voilà la méthode :
Code :
|
heureusement que j'ai trouvé, vous semblez de pas aimer mes questions... trop compliquées ?
Marsh Posté le 09-06-2008 à 18:59:51
C'est exactement ce que je cherchais, après des heures passées à bricoler avec ces satanées rotations
Mais j'avais juste besoin de tourner une image de 90°, voici ce que ça donne (en JDK 1.6):
newWidth=image.getHeight(); newHeight = image.getWidth();
AffineTransform at = AffineTransform.getTranslateInstance((newWidth-image.getWidth())/2, (newHeight-image.getHeight())/2);
at.concatenate( AffineTransform.getQuadrantRotateInstance(1, image.getWidth()/2, image.getHeight()/2) );
AffineTransformOp op = new AffineTransformOp(at, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
BufferedImage rotationImage = new BufferedImage(newWidth, newHeight, image.getType());
C'est propre et rapide.
Un grand merci, cet exemple sera utile à tous ceux qui veulent appliquer une rotation à une BufferedImage
Marsh Posté le 26-01-2004 à 10:36:50
Salut,
suite à mon problème avec une rotation d'image, j'ai compris comment fonctionnait l'opération de rotation, et pourquoi ça ne marchait pas... Au lieu de prendre l'image complète, il ne prend qu'une partie des données. l'image suivante explique mieux que les mots :
Ce mode de fonctionnement est un mode de fonctionnement normal. Les données rotationnées ajoutent du blanc autour de l'image, mais tout est prix en compte.
Et voilà comment fonctionne l'opérateur de rotation de Java. Il fait pivoter l'image autour du point (0,0), ce qui ne serait pas gênant si ce même opérateur prenait en compte les données à gauche de ce point. Voilà l'image qu'il recrée :
Je comprend maintenant pourquoi il me dit que la largeur est de 0 pour un angle de 90°...
Vous savez comment contrer ce mode de fonctionnement ? Ca me parait vraiment louche qu'un tel opérateur fassent de telles erreurs... Voilà le code qui génère l'image :
Voilà la taille de l'image originale :
Taille de l'image : 2113,3149
Voilà la taille de l'image pivotée, en toute logique :
Nouvelle Taille théorique : 3063,3682
Voilà la taille de l'image telle que la conçoit Java :
Nouvelle Taille : 1986,3682
plus de 1000 pixels perdus en largeur...
Vous avez une idée de comment corriger ça ? merci...
Message édité par Predicator le 26-01-2004 à 11:06:53