Algo - pivoter une image
Résolu/Fermé
Étienne9
Messages postés
1022
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
10 mai 2015
-
Modifié par Étienne9 le 25/02/2012 à 09:07
Étienne9 Messages postés 1022 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 10 mai 2015 - 8 mars 2012 à 20:35
Étienne9 Messages postés 1022 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 10 mai 2015 - 8 mars 2012 à 20:35
Bonjour tout le monde.
Alors voilà, j'ai expliqué mon problème sur cette vidéo qui sera plus tard effacée :
https://www.youtube.com/watch?v=g0tt_cScxB4&feature=player_embedded
Quelqu'un pourrait m'aider s'il vous plaît ? Ça fait trois jours que je cherche une relation entre l'image d'origine et une image pivoté d'un angle alpha.
Merci beaucoup d'avance :)
Alors voilà, j'ai expliqué mon problème sur cette vidéo qui sera plus tard effacée :
https://www.youtube.com/watch?v=g0tt_cScxB4&feature=player_embedded
Quelqu'un pourrait m'aider s'il vous plaît ? Ça fait trois jours que je cherche une relation entre l'image d'origine et une image pivoté d'un angle alpha.
Merci beaucoup d'avance :)
A voir également:
- Algo - pivoter une image
- Faire pivoter une video - Guide
- Pivoter ecran - Guide
- Image iso - Guide
- Légender une image - Guide
- Comment agrandir une image - Guide
4 réponses
Bonjour,
Ton problème consiste à transformer des coordonnées cartésiennes en coordonnées polaires et inversement.
http://fr.wikipedia.org/wiki/Coordonn%C3%A9es_polaires
Suivant les languages, il existe des fonctions trigo toutes faites pour ça.
Sinon, faut les programmer toi-même. Mais c'est tout à fait possible.
Les coordonnées seront des valeurs réèlles (et non entières).
;)
Ton problème consiste à transformer des coordonnées cartésiennes en coordonnées polaires et inversement.
http://fr.wikipedia.org/wiki/Coordonn%C3%A9es_polaires
Suivant les languages, il existe des fonctions trigo toutes faites pour ça.
Sinon, faut les programmer toi-même. Mais c'est tout à fait possible.
Les coordonnées seront des valeurs réèlles (et non entières).
;)
Étienne9
Messages postés
1022
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
10 mai 2015
49
25 févr. 2012 à 21:14
25 févr. 2012 à 21:14
Bonjour,
Je vais faire cela en Java.
Je vais faire cela en Java.
Étienne9
Messages postés
1022
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
10 mai 2015
49
Modifié par Étienne9 le 8/03/2012 à 00:24
Modifié par Étienne9 le 8/03/2012 à 00:24
J'ai fait une fonction en Java là qui prend en paramètre un angle en degré mais la fonction ne fonctionne pas.
public static void rotation(int angle)
{
int l=0,h=0,l2=0,h2=0,i=0,j=0,pix=0,phd=0,pbd=0;
BufferedImage im=null,imro=null;
try {
im = ImageIO.read(new File("./image.bmp"));
}
catch (Exception e) {}
l = im.getWidth();
h = im.getHeight();
phd = (int) (Math.abs((l-1)*Math.cos(angle*Math.PI/180)));
pbd = (int) (Math.abs((l-1)*Math.sin(angle*Math.PI/180) + (h-1)*Math.cos(angle*Math.PI/180)));
imro = new BufferedImage(phd,pbd,BufferedImage.TYPE_INT_RGB);
for (j=0;j<l;j++) {
for (i=0;i<h;i++) {
pix = im.getRGB(i,j);
imro.setRGB(Math.abs((int) (i*Math.cos(angle*Math.PI/180)-j*Math.sin(angle*Math.PI/180))),Math.abs((int)(i*Math.sin(angle*Math.PI/180) + j*Math.cos(angle*Math.PI/180))),pix);
}
}
try {
ImageIO.write(imro,"png",new File("rotation.png"));
}
catch (Exception e) {};
}
Pouvez-vous me trouvez mes erreurs s'il vous plaît car je ne trouve pas.
Informations : PHD pour pixel en haut à droite et PBD pour pixel en bas à droite.
Merci beaucoup.
public static void rotation(int angle)
{
int l=0,h=0,l2=0,h2=0,i=0,j=0,pix=0,phd=0,pbd=0;
BufferedImage im=null,imro=null;
try {
im = ImageIO.read(new File("./image.bmp"));
}
catch (Exception e) {}
l = im.getWidth();
h = im.getHeight();
phd = (int) (Math.abs((l-1)*Math.cos(angle*Math.PI/180)));
pbd = (int) (Math.abs((l-1)*Math.sin(angle*Math.PI/180) + (h-1)*Math.cos(angle*Math.PI/180)));
imro = new BufferedImage(phd,pbd,BufferedImage.TYPE_INT_RGB);
for (j=0;j<l;j++) {
for (i=0;i<h;i++) {
pix = im.getRGB(i,j);
imro.setRGB(Math.abs((int) (i*Math.cos(angle*Math.PI/180)-j*Math.sin(angle*Math.PI/180))),Math.abs((int)(i*Math.sin(angle*Math.PI/180) + j*Math.cos(angle*Math.PI/180))),pix);
}
}
try {
ImageIO.write(imro,"png",new File("rotation.png"));
}
catch (Exception e) {};
}
Pouvez-vous me trouvez mes erreurs s'il vous plaît car je ne trouve pas.
Informations : PHD pour pixel en haut à droite et PBD pour pixel en bas à droite.
Merci beaucoup.
Étienne9
Messages postés
1022
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
10 mai 2015
49
8 mars 2012 à 16:34
8 mars 2012 à 16:34
J'ai inversé un h et un l, maintenant ça ne fonctionne qu'à condition que je définisse moi même l'image de départ.
Pouvez-vous m'aider à définir la taille de la nouvelle image s'il vous plaît ?
De plus, j'ai fait une autre fonction récursive qui s'occupe de 90, 180 et 270° mais seul le 90° fonctionne.
public static void rotation90(int nb, BufferedImage im)
{
int l=0,h=0,i=0,j=0,pix=0;
BufferedImage imro;
l = im.getWidth();
h = im.getHeight();
imro = new BufferedImage(h,l,BufferedImage.TYPE_INT_RGB);
for (j=0;j<h;j++) {
for (i=0;i<l;i++) {
pix = im.getRGB(i,j);
imro.setRGB(h-j-1,l-i-1,pix);
}
}
if (nb == 1) {
try {
ImageIO.write(imro,"png",new File("rotation.png"));
}
catch (Exception e) {};
}
else {
if(nb == 2) {
rotation90(1,imro);
}
else {
rotation90(2,imro);
}
}
}
Pouvez-vous m'aider s'il vous plaît ?
Pouvez-vous m'aider à définir la taille de la nouvelle image s'il vous plaît ?
De plus, j'ai fait une autre fonction récursive qui s'occupe de 90, 180 et 270° mais seul le 90° fonctionne.
public static void rotation90(int nb, BufferedImage im)
{
int l=0,h=0,i=0,j=0,pix=0;
BufferedImage imro;
l = im.getWidth();
h = im.getHeight();
imro = new BufferedImage(h,l,BufferedImage.TYPE_INT_RGB);
for (j=0;j<h;j++) {
for (i=0;i<l;i++) {
pix = im.getRGB(i,j);
imro.setRGB(h-j-1,l-i-1,pix);
}
}
if (nb == 1) {
try {
ImageIO.write(imro,"png",new File("rotation.png"));
}
catch (Exception e) {};
}
else {
if(nb == 2) {
rotation90(1,imro);
}
else {
rotation90(2,imro);
}
}
}
Pouvez-vous m'aider s'il vous plaît ?
Étienne9
Messages postés
1022
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
10 mai 2015
49
8 mars 2012 à 20:35
8 mars 2012 à 20:35
Je vais poster tout ça ailleurs sur ce forum ça sera mieux.