PureBasic

Forums PureBasic
Nous sommes le Lun 24/Juin/2019 18:33

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 
Auteur Message
 Sujet du message: Fast Rotate /Mirror Image Effect
MessagePosté: Ven 01/Fév/2019 10:00 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 25/Aoû/2004 6:31
Messages: 2594
Localisation: Eragny
Voici une fonction que je viens de faire pour des besoins bien précis qui permet de faire des rotations et des effets miroir rapide sur une image. Peut être que ça intéressera certain d'entre vous.
Si quelqu'un sait comment rendre compatible linux/macOs cette fonction je suis preneur !

Edit 2019-02-04 Mise à jour a cause de quelques bugs
Code:
Enumeration  1
   #Effect_Normal
   #Effect_Mirror_horizontal
   #Effect_Rotate_180
   #Effect_Mirror_vertical
   #Effect_Mirror_horizontal_Rotate_270_CW
   #Effect_Rotate_90_CW
   #Effect_Mirror_Horizontal_Rotate_90_CW
   #Effect_Rotate_270_CW
EndEnumeration
Procedure.i RotateImage(Image.i,Effect.l)

  Protected Height.l = ImageHeight(Image)
  Protected Width.l = ImageWidth(Image) 
  Protected TmpImage.i
  If Height > Width
    TmpImage = CreateImage(#PB_Any,Height,Height)
    Else
    TmpImage = CreateImage(#PB_Any,Width,Width)
  EndIf
 
  Dim p.point(2)
  Protected GrabWidth.l,GrabHeight.l
  Select Effect.l
    Case 0
      FreeImage(TmpImage)
      ProcedureReturn Image
    Case 1 ; Horizontal (normal)
      FreeImage(TmpImage)
      ProcedureReturn Image
    Case 2 ; Mirror horizontal
      p(0)\x=0
      p(0)\y=Height
      p(1)\x=Width
      p(1)\y=Height
      p(2)\x=0 
      p(2)\y=0
      GrabWidth=Width
      GrabHeight=Height
    Case 3 ; Rotate 180
      p(0)\x=Width
      p(0)\y=Height
      p(1)\x=0
      p(1)\y=Height
      p(2)\x=Width 
      p(2)\y=0
      GrabWidth=Width
      GrabHeight=Height
    Case 4 ; Mirror vertical
      p(0)\x=Width
      p(0)\y=0
      p(1)\x=0
      p(1)\y=0
      p(2)\x=Width 
      p(2)\y=Height
      GrabWidth=Width
      GrabHeight=Height
    Case 5 ; Mirror horizontal And rotate 270 CW
      p(0)\x=0
      p(0)\y=0
      p(1)\x=0
      p(1)\y=Width
      p(2)\x=Height
      p(2)\y=0
      GrabWidth=Height
      GrabHeight=Width   
    Case 6 ; Rotate 90 CW
      p(0)\x=Height
      p(0)\y=0
      p(1)\x=Height
      p(1)\y=Width
      p(2)\x=0
      p(2)\y=0
      GrabWidth=Height
      GrabHeight=Width
    Case 7 ; Mirror horizontal And rotate 90 CW
      p(0)\x=0
      p(0)\y=0
      p(1)\x=0
      p(1)\y=Width
      p(2)\x=Height
      p(2)\y=0
      GrabWidth=Height
      GrabHeight=Width
    Case 8 ; Rotate 270 CW
      p(0)\x=0
      p(0)\y=Width
      p(1)\x=0
      p(1)\y=0
      p(2)\x=Height 
      p(2)\y=Width
      GrabWidth=Height 
      GrabHeight=Width
  EndSelect
 
  Protected Dc.i
  Dc = StartDrawing(ImageOutput(TmpImage))
       DrawImage(ImageID(Image),0,0)
       PlgBlt_(Dc,p(),Dc,0,0,Width,Height,0,0,0)
       StopDrawing()
       FreeImage(Image)
       Protected NewImage.i
  NewImage = GrabImage(TmpImage,#PB_Any,0,0,GrabWidth,GrabHeight)
  FreeImage(TmpImage)
  Debug "GrabImage="+Str(NewImage)
  ProcedureReturn NewImage
EndProcedure 


Dernière édition par Thyphoon le Lun 04/Fév/2019 13:06, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Fast Rotate /Mirror Image Effect
MessagePosté: Ven 01/Fév/2019 16:37 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8668
Merci, ce sera surement bien plus rapide qu'avec la lib vectorDrawing que j'utilisais pour faire mes rotations de photos.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Fast Rotate /Mirror Image Effect
MessagePosté: Sam 02/Fév/2019 12:10 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 25/Aoû/2004 6:31
Messages: 2594
Localisation: Eragny
Ar-S a écrit:
Merci, ce sera surement bien plus rapide qu'avec la lib vectorDrawing que j'utilisais pour faire mes rotations de photos.

Oui :P parcontre j'ai fait quelques erreurs ... je met a jour durant le week-end des que j'ai 5 minutes


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Fast Rotate /Mirror Image Effect
MessagePosté: Lun 04/Fév/2019 13:06 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 25/Aoû/2004 6:31
Messages: 2594
Localisation: Eragny
Le code a été mis à jour ...


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: G-Rom, Google [Bot] et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye