J'ai une matrice resultante a partir d une combinaison de rotation et scale selon l axe x et l axe y . est ce que je peu extraire seulement le scale pour redimensinner seulemt l'image sans faire la rotation.
J'ai une matrice resultante a partir d une combinaison de rotation et scale selon l axe x et l axe y . est ce que je peu extraire seulement le scale pour redimensinner seulemt l'image sans faire la rotation.
est ce que ca depend de l ordre et le nombre de transformation :
* rotation , translation , rotation
* translation , rotation , translation
La matrice de transformation est la résultant de toutes les opérations que vous lui avez donné. Si vous voulez connaitre le facteur de zoom résultant que vous avez obtenu, je vous suggère de prendre trois points: A(0,0) B(100,0) C(0,100), vous les transformez tous les trois avec la matrice et mesurez la distance A-B et A-C résultante. vous comparez à la distance de départ et vous avez une idée votre facteur de zoom.
Le probleme s est que je ne peut pas connaitre les coordonne des point sur mon image car je connait seulement le conteneur graphics2D :
Je doit positionner cette image dans ce graphics2D que je lui applique une transformation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Graphics2D gimg = contentPage.createGraphics(wg,hg); AffineTransform transformer = new AffineTransform(a,b,c,d,0,0); gimg.transform(transformer); gimg.drawImage(img, x,y ,w,h, null);
Al aide de cette formule je peut trouver x' et y' mais il me manque l echelle:
x = x0 + (x' cos(φ) - y' sin(φ)) * échelle
y = y0 + (x' sin(φ) + y' cos(φ)) * échelle
j ai comprit que l echelle suivant x est scaleX , echelle suivant y est scaleY.
est ce que se calcul est faux , est ce que l echelle a une seule valeur (ca ne depend ni de x ni de y) , ou bien ca depent de la taille du Graphics2D ou de la taille de l image.
Merci de m eclairir .
Ce n'est pas du tout la formule qui est utilisée par affinetransform. LEs trasnformation affines sont expliquées ici:
http://en.wikipedia.org/wiki/Affine_transformation
Votre formule n'est qu'un cas particulier, hors, si j'ai bien suivi votre message, vous avez une transformations affine existante et cherchez son scale.
je travaille sur un projet itext , Je veux cree unfichier pdf dans le quelle il y a des image a partir d une application flash.
le repere dans l application flash est 10000/10000 pixel qui n est pas le meme dans le fichier pdf.
S est pour ce la que j ai besoin de connaitre les coordonnes de mon image par rapport au nouveau repere .
j ai fais la rotation inverce comme on me la dit pourJe croit qui il faux que b et c soit eguale a 0 pour que a et d soit les scales.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 transformer.rotate(Math.toRadians(-rotate)); float a=(float) transformer.getScaleX();float d=(float) transformer.getScaleY(); float b=(float) transformer.getShearX();float c=(float) transformer.getShearY();
j ai besoin du scale pour connaitre la postion exacte de mon image car sans rotation j arrive a calculer la postion exacte de mon image
j'ai toujours pas compris pourquoi vous essayez d'aller à l'envers dans votre matrice. Vous avez une image de départ: 10000x10000, vous avez un image final (Disons 500x500), vous prenez votre Graphics, vous lui ajouter un affine qui faite un scale 1/20x1/20 et le tour est joué.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Graphics2D g = .....; AffineTransform t = new AffineTransform(); t.scale(0.05,0.05); g.drawImage(imageFlash,t,null);
Merci tchize ,
s est ca le probleme je ne connait pas les dimension de l image apres la trasformation car la tronsformation est applique au graphics2D qui n a pas les meme dimension que l image voici un exemple.en plus j ai deux application flash et java. je prend les donnee flash que je ne peut pas modifier et je les trasmet a itext pour generer le pdf.
Comment je peut savoir les donnee de mon image x,y,hauteur, largeur , je connait seulement les donne du conteneur de l image.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <a>-0.5533490180969238</a> <b>-0.4213285744190216</b> <c>0.2621118724346161</c> <d>-0.3442431092262268</d> <tx>5055.05</tx> <ty>5356.15</ty> </matrix> <width>780.0500000000002</width><!-- largeur box le graphics 2D--> <height>760.5999999999995</height><!-- hauteur box le graphics 2D -->
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager