Aller au contenu


Photo

Rotation d'image


  • Please log in to reply
23 replies to this topic

#1 Gifour

Gifour

    Vieil inactif en retraite

  • Membres
  • PipPipPipPipPipPipPip
  • 3 729 Messages :
  • Configuration:IMac 20 pouces,,Ipad
  • Sexe:Masculin
  • Localisation:Les Sables d'Olonne
  • Passions:Moi

Posté 18 avril 2007 - 07:58

Pour un logiciel j'aurais beoin de faire pivoter une image d'un angle donné. est ce quelqu'un pourrait me filer l'algo qui permet cela. je l'ai fait avec des angles 90 mais je voudrais le faire avec un angle quelconque
Merci :up:
Comme Dieu à part moi, vous voyez qui? (Gifour)

Fermer les maisons closes, c'est pire qu'une faute, c'est un pléonasme (Arletty)

#2 BorakLeRouge

BorakLeRouge

    Hamster d'or (dort ?)

  • Membres
  • PipPipPipPipPipPipPip
  • 3 982 Messages :
  • Configuration:Mac Mini Core i7 2019 - 16Go - 2x1To SSD
  • Sexe:Masculin
  • Localisation:Cormeilles en Parisis.rb
  • Passions:Macintosh, Photo, Haute-fidélité, Ski, Roller, Call of Duty, Tactical Ops, Counter Strike, Worms 1

Posté 18 avril 2007 - 09:24

Ouh, j'ai fait ça il y a longtemps. Ali m'avait donné une technique dans le forum qui utilise une option spéciale de RB (outils 2D). Mais j'ai oublié.

Tu peux le retrouver dans le source de mon petit logiciel : RetoucheSolo.

Sinon, cherche dans le forum :D

Je fais mes sauvegardes sur NSA-Cloud !

Au bout de 10 ans, le vieux MacPro vient de laisser sa place à un MacMini i7...


#3 jp

jp

    Touriste

  • Modérateurs
  • PipPipPipPipPipPipPipPipPip
  • 6 564 Messages :
  • Configuration:N/A
  • Sexe:Masculin
  • Localisation:Créteil

Posté 18 avril 2007 - 10:36

Oui il faut utiliser PixmapShape et les propriétés (tel que rotation) hérité de Object 2D.
La phrase suivante est fausse. La phrase précédente est vraie.

#4 Gifour

Gifour

    Vieil inactif en retraite

  • Membres
  • PipPipPipPipPipPipPip
  • 3 729 Messages :
  • Configuration:IMac 20 pouces,,Ipad
  • Sexe:Masculin
  • Localisation:Les Sables d'Olonne
  • Passions:Moi

Posté 18 avril 2007 - 12:51

Oui il faut utiliser PixmapShape et les propriétés (tel que rotation) hérité de Object 2D.


N'ayant jamais utilisé d'objet 2D je sens venir la grande premiere. planquez vous les questions vont tomber... :w00t: :yahoo:

Ce message a été modifié par Gifour - 18 avril 2007 - 12:52 .

Comme Dieu à part moi, vous voyez qui? (Gifour)

Fermer les maisons closes, c'est pire qu'une faute, c'est un pléonasme (Arletty)

#5 BorakLeRouge

BorakLeRouge

    Hamster d'or (dort ?)

  • Membres
  • PipPipPipPipPipPipPip
  • 3 982 Messages :
  • Configuration:Mac Mini Core i7 2019 - 16Go - 2x1To SSD
  • Sexe:Masculin
  • Localisation:Cormeilles en Parisis.rb
  • Passions:Macintosh, Photo, Haute-fidélité, Ski, Roller, Call of Duty, Tactical Ops, Counter Strike, Worms 1

Posté 18 avril 2007 - 22:44

Allez,

Je viens de chercher dans mon programme :

Protected Function MRotation(LaPict as picture) As Picture
  dim Pix as PixmapShape
  dim p as Picture
  dim pmax as Integer
  Pix=New PixmapShape(LaPict)
  p=NewPicture(LaPict.Width, LaPict.Height,32)
  Pix.Rotation=(-BtRotation.Value/200)
  p.Graphics.DrawObject pix, LaPict.Width / 2, LaPict.Height / 2
  Return p
End Function
BtRotation, c'est un slider de valeur -100 +100.

Je fais mes sauvegardes sur NSA-Cloud !

Au bout de 10 ans, le vieux MacPro vient de laisser sa place à un MacMini i7...


#6 AliGator

AliGator

    (Trop) Grand Bavard

  • Membres d'honneur
  • PipPipPipPipPipPipPipPipPip
  • 12 338 Messages :
  • Configuration:• MacBook Pro 15" 2,2GHz, 10.6
    • MacMini G4 1,42GHz, 10.5
  • Sexe:Masculin
  • Localisation:Rennes (Bretagne, France)
  • Passions:Piano, Cuisine, Danse (Rock, ...), faire des réponses de 3km

Posté 19 avril 2007 - 01:05

Dans la série "AliExtensions" (module RealBasic regroupant des méthodes pratiques que je m'étais faites, et utilisant massivement le mot clé "Extends" pour rajouter des fonctions des objets existants), je vous présente l'extension "Rotate" de l'objet Picture.
Pour la mettre en place, il suffit de créer un nouveau module (File -> New Module, perso je regroupe toutes mes méthodes du genre dans un module "AliExtensions" que j'exporte et peut ainsi réimporter dans tous les projets RB que je veux) et d'ajouter cette méthode, d'accès Global (Anywhere) (nécessité pour les méthodes avec "Extends") :
Function Rotate(Extends srcPict as Picture, radiansCWangle as double, adaptSize as boolean = true)
  dim Pix, PixMask as PixmapShape
  dim destPict as Picture
  Dim newW, newH, cosA, sinA as double
  
  // encapsuler l'image dans un Object2D "PixMapShape" et appliquer la rotation
  Pix = New PixmapShape(srcPict)
  Pix.Rotation = radiansCWangle
  // pareil pour le Mask (couche alpha)
  PixMask = New PixmapShape(srcPict.Mask)
  PixMask.Rotation = radiansCWangle
  
  // calculer la nouvelle taille si demandé d'adapter
  if (adaptSize) then
	cosA = abs(cos(radiansCWangle))
	sinA = abs(sin(radiansCWangle))
	newW = srcPict.Width*cosA + srcPict.Height*sinA
	newH = srcPict.Width*sinA + srcPict.Height*cosA
	
	destPict = NewPicture(newW, newH, 32)
  else
	destPict = NewPicture(srcPict.Width, srcPict.Height,32)
  end if
  
  // DrawObject place le centre de l'objet PixMapShape aux coordonnées données, ici le centre de destPict
  destPict.Graphics.DrawObject Pix, destPict.Width/2, destPict.Height/2
  destPict.Mask.Graphics.ClearRect(0,0,destPict.width, destPict.height)
  destPict.Mask.Graphics.DrawObject PixMask, destPict.Width/2, destPict.Height/2
  
  Return destPict
End Function
L'angle est, comme le nom du paramètre le suggère, en radians et dans le sens "ClockWise" (sens horaire).

L'utilisation de cette extension est on ne peut plus simple : une fois la méthode rajoutée dans un module, on peut, n'importe où dans le code du projet, obtenir la rotation d'une image P (as Picture) d'un angle alpha ainsi : Prot = P.Rotate(alpha) (où Prot est une variable de type Picture qui recevra la nouvelle image, avec la rotation de l'angle alpha appliquée), comme si (et c'est toute la magie de "Extends") la méthode "Rotate" étaient une méthode de l'objet Picture !

Pour rappel angleEnRadians = angleEnDegres*3.14159265/180
Par défaut la taille de l'image de destination (Prot) est adaptée (adaptSize = true) pour que l'on voit la totalité de l'image après rotation, mais on peut passer adaptSize false pour que l'image de destination ait la même taille que l'image source, quitte ce que le résultat de la rotation soit "coupé" : Prot = P.Rotate(alpha, false)

Cette méthode respecte le masque (couche alpha) de l'image, et de plus laisse transparent toutes les zones rajoutées par la rotation et qui n'étaient pas dans l'image originelle.

Faites-en bon usage....

Fichier joint  aliproof_macfr.jpg   41,62 Ko   5 Nombre de téléchargements 


Le posteur fou de macfr
Mon blog: Crunchy Development
______________
Devise Shadok : S'il n'y a pas de solution, c'est qu'il n'y a pas de problème...


#7 Gifour

Gifour

    Vieil inactif en retraite

  • Membres
  • PipPipPipPipPipPipPip
  • 3 729 Messages :
  • Configuration:IMac 20 pouces,,Ipad
  • Sexe:Masculin
  • Localisation:Les Sables d'Olonne
  • Passions:Moi

Posté 19 avril 2007 - 08:31

Borak : j'avais effectivement retrouvé dans ton code la procedure qui faisait cela

Ali: Une fois encore merci c'est juste ce que je voulais.

Je mettrais le petit soft concerné en ligne quand il sera fini :clap: :clap:
Comme Dieu à part moi, vous voyez qui? (Gifour)

Fermer les maisons closes, c'est pire qu'une faute, c'est un pléonasme (Arletty)

#8 Gifour

Gifour

    Vieil inactif en retraite

  • Membres
  • PipPipPipPipPipPipPip
  • 3 729 Messages :
  • Configuration:IMac 20 pouces,,Ipad
  • Sexe:Masculin
  • Localisation:Les Sables d'Olonne
  • Passions:Moi

Posté 19 avril 2007 - 10:33

Doublement merci ALi en plus j'ai compris quoi servait la propriété Extends dont je ne me servais pas
:clap: :clap:
Comme Dieu à part moi, vous voyez qui? (Gifour)

Fermer les maisons closes, c'est pire qu'une faute, c'est un pléonasme (Arletty)

#9 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 688 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 19 avril 2007 - 10:58

Fichier joint  aliproof_macfr.jpg   41,62 Ko   5 Nombre de téléchargements 


J'y crois pas ça? :clap: :clap: :clap:
Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#10 Gifour

Gifour

    Vieil inactif en retraite

  • Membres
  • PipPipPipPipPipPipPip
  • 3 729 Messages :
  • Configuration:IMac 20 pouces,,Ipad
  • Sexe:Masculin
  • Localisation:Les Sables d'Olonne
  • Passions:Moi

Posté 19 avril 2007 - 14:45

J'y crois pas ça? :clap: :clap: :clap:


C' est l'histoire d'un croco, pardon d'une grenouille, qui voulait... :yahoo: :yahoo:
Comme Dieu à part moi, vous voyez qui? (Gifour)

Fermer les maisons closes, c'est pire qu'une faute, c'est un pléonasme (Arletty)

#11 jp

jp

    Touriste

  • Modérateurs
  • PipPipPipPipPipPipPipPipPip
  • 6 564 Messages :
  • Configuration:N/A
  • Sexe:Masculin
  • Localisation:Créteil

Posté 19 avril 2007 - 16:44

J'y crois pas ça? :clap: :clap: :clap:

J'ai pas osé relever :P
La phrase suivante est fausse. La phrase précédente est vraie.

#12 AliGator

AliGator

    (Trop) Grand Bavard

  • Membres d'honneur
  • PipPipPipPipPipPipPipPipPip
  • 12 338 Messages :
  • Configuration:• MacBook Pro 15" 2,2GHz, 10.6
    • MacMini G4 1,42GHz, 10.5
  • Sexe:Masculin
  • Localisation:Rennes (Bretagne, France)
  • Passions:Piano, Cuisine, Danse (Rock, ...), faire des réponses de 3km

Posté 20 avril 2007 - 16:29

Je précise, le "tampon" n'est pas de moi :P
Mais fallait bien que je lui trouve une utilité :D

Le posteur fou de macfr
Mon blog: Crunchy Development
______________
Devise Shadok : S'il n'y a pas de solution, c'est qu'il n'y a pas de problème...


#13 korrigan

korrigan

    Habitué(e)

  • Membres
  • PipPip
  • 191 Messages :

Posté 14 septembre 2009 - 11:36

La fonction "rotate" d'Ali fonctionne à merveille mais j'ai (évidemment) un soucis :

En gros, l'idée est de faire bouger un p'tite voiture, de faire tourner l'image pour changer sa direction.
Mais j'ai un probleme pour gérer le masque... en gros, je tourne ma voiture et je la copie a l'aide de graphics.drawpicture sur l'image représentant le circuit (pour l'heure un fond avec une texture). Comment faire en sorte que seule la voiture soit copiée, et non le fond de l'image de travail?

merci d'avance!

#14 BorakLeRouge

BorakLeRouge

    Hamster d'or (dort ?)

  • Membres
  • PipPipPipPipPipPipPip
  • 3 982 Messages :
  • Configuration:Mac Mini Core i7 2019 - 16Go - 2x1To SSD
  • Sexe:Masculin
  • Localisation:Cormeilles en Parisis.rb
  • Passions:Macintosh, Photo, Haute-fidélité, Ski, Roller, Call of Duty, Tactical Ops, Counter Strike, Worms 1

Posté 14 septembre 2009 - 13:37

Perso je ferai de la manière suivante.

Une image simple de la voiture.
Une image simple du masque.

Je fais tourner les deux images et j'associe le masque ensuite a la voiture.

Ce message a été modifié par BorakLeRouge - 14 septembre 2009 - 13:37 .

Je fais mes sauvegardes sur NSA-Cloud !

Au bout de 10 ans, le vieux MacPro vient de laisser sa place à un MacMini i7...


#15 korrigan

korrigan

    Habitué(e)

  • Membres
  • PipPip
  • 191 Messages :

Posté 14 septembre 2009 - 13:45

et apres tu copies quoi dans le canevas circuit? l'image que tu as fait tourner?

#16 BorakLeRouge

BorakLeRouge

    Hamster d'or (dort ?)

  • Membres
  • PipPipPipPipPipPipPip
  • 3 982 Messages :
  • Configuration:Mac Mini Core i7 2019 - 16Go - 2x1To SSD
  • Sexe:Masculin
  • Localisation:Cormeilles en Parisis.rb
  • Passions:Macintosh, Photo, Haute-fidélité, Ski, Roller, Call of Duty, Tactical Ops, Counter Strike, Worms 1

Posté 14 septembre 2009 - 13:49

La nouvelle image avec son nouveau masque.

Je fais mes sauvegardes sur NSA-Cloud !

Au bout de 10 ans, le vieux MacPro vient de laisser sa place à un MacMini i7...


#17 AliGator

AliGator

    (Trop) Grand Bavard

  • Membres d'honneur
  • PipPipPipPipPipPipPipPipPip
  • 12 338 Messages :
  • Configuration:• MacBook Pro 15" 2,2GHz, 10.6
    • MacMini G4 1,42GHz, 10.5
  • Sexe:Masculin
  • Localisation:Rennes (Bretagne, France)
  • Passions:Piano, Cuisine, Danse (Rock, ...), faire des réponses de 3km

Posté 14 septembre 2009 - 14:45

En fait, vu comment j'avais codé ma méthode à l'époque :
1) Ca crée une PixmapShape avec l'image à faire tourner, puis applique une rotation dessus
2) Ca crée une nouvelle Picture vide, de la bonne taille (selon l'angle de rotation)
3) Ca dessine la PixmapShape (contenant donc l'image d'origine) rotationnée dans cette nouvelle Picture

C'est à l'étape 2, de création de nouvelle Picture vide, qu'il faut "vider" le masque de la picture P pour rendre tout transparent par défaut (et non opaque)... Puis dessiner dans le P.graphics.mask le masque rotationné de l'image.
Après, je ne sais plus si, quand on dessine la PixmapShape rotationnée sur l'image P, ça modifie le masque en mettant en opaque les zones dessinées au passage (si oui il n'y a rien d'autre à faire de plus que "vider P.graphics.mask" avant de dessiner dessus) ou s'il faut le faire soi-même donc dans ce cas après avoir "vidé" le masque (en le remplissant entièrement de blanc (ou de noir, je ne sais jamais quelle couleur pour les masques indique transparent et laquelle indique opaque), dessiner le masque de l'image d'origine, lui aussi rotationné, dans le masque de P.

Le posteur fou de macfr
Mon blog: Crunchy Development
______________
Devise Shadok : S'il n'y a pas de solution, c'est qu'il n'y a pas de problème...


#18 yzmar

yzmar

    Habitué(e)

  • Membres
  • PipPip
  • 180 Messages :
  • Configuration:iPhone 4S
    Imac 2011
    Macbook 13" 2007
    PowerBook17"G3
    iPod 40Go 2G
  • Sexe:Masculin
  • Localisation:Nantes
  • Passions:Mac REALBasic Mecanique Roller Photo

Posté 14 septembre 2009 - 19:51

Salut,


Sinon pour tout ce qui est traitement d'images, j'ai trouvé une librairie plutôt sympathique.
Elle fait partie du code source du logiciel ImagePlay ( le développement de l'application est arrêté).

Le code est disponible gratuitement sur SourceForge ( http://imageplay.sourceforge.net/ )
Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes.
Turbo Script

#19 korrigan

korrigan

    Habitué(e)

  • Membres
  • PipPip
  • 191 Messages :

Posté 05 novembre 2014 - 19:00

je déterre un vieux sujet...

 

Evidemment, je cherche à faire la rotation d'une image, mais autour d'un axe centré au mileu de cette dernière...

 

d'après la doc que j'ai pu trouver, 

 

 

Object2D.Rotation 

Clockwise rotation, in radians, around the X, Y point.

 

Mais comment définit-on ces X et Y?

 

PS : j'espère que ma question n'est pas totalement stupide... (après je me replonge à nouveau dans real basic pour automatiser une tâhche et à chaque fois le (re)plongeon est douloureux, snif...

 

merci d'avance...



#20 BorakLeRouge

BorakLeRouge

    Hamster d'or (dort ?)

  • Membres
  • PipPipPipPipPipPipPip
  • 3 982 Messages :
  • Configuration:Mac Mini Core i7 2019 - 16Go - 2x1To SSD
  • Sexe:Masculin
  • Localisation:Cormeilles en Parisis.rb
  • Passions:Macintosh, Photo, Haute-fidélité, Ski, Roller, Call of Duty, Tactical Ops, Counter Strike, Worms 1

Posté 06 novembre 2014 - 00:01

Oui, un peu bizarre l'explication. La rotation se fait à partir du centre et puis c'est tout :)

L'idéal c'est de faire des essais...


Je fais mes sauvegardes sur NSA-Cloud !

Au bout de 10 ans, le vieux MacPro vient de laisser sa place à un MacMini i7...


#21 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 688 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 07 novembre 2014 - 10:16

C'est plus du détérage à ce niveau-là mais de l'archéologie, bravo !  :zz-big-cafe:


Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#22 Jehan de Mazé

Jehan de Mazé

    Grand(e) bavard(e)

  • Membres
  • PipPipPip
  • 270 Messages :
  • Configuration:MacBook Pro 17p - MacMini - iMac - 25 mac collector
    et un machin pour le truc de bill
  • Sexe:Masculin
  • Localisation:Chennevieres-Val de Marne-France
  • Passions:Tres curieux, envie de tout savoir
    Généalogie, Vol à voile, Vol moteur, Programmation

Posté 07 novembre 2014 - 14:32

Evidemment, je cherche à faire la rotation d'une image, mais autour d'un axe centré au mileu de cette dernière...

 

Je pense que ce n'est pas une rotation que tu veux faire mais une symétrie verticale ou horizontale


--
Tu peux continuer à dormir sans faire plus de bruit qu'un mac

#23 korrigan

korrigan

    Habitué(e)

  • Membres
  • PipPip
  • 191 Messages :

Posté 07 novembre 2014 - 22:59

Non, non, c'est bien une rotation que je souhaite faire, mais il semblerait (je suis sous windows, désolé) que la rotation se fasse à partir d'un angle (en gros si je fais plusieurs rotations de suite, genre d'un angle de 10 degres, mon image disparait peu à peu en périphérie, comme poussé par la force centrifuge quoi!

 

bref, je tourne en rond ;-)


Ce message a été modifié par korrigan - 07 novembre 2014 - 23:00 .


#24 Eric P.

Eric P.

    Habitué(e)

  • Membres
  • PipPip
  • 195 Messages :
  • Sexe:Masculin
  • Localisation:Tours

Posté 08 novembre 2014 - 18:22

Que donnes-tu comme point x,y pour la rotation ?

A priori je dirai qu'il faut entrer Width/2, Height/2.






0 utilisateur(s) en train de lire ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)