Page 1 sur 1

[resolu] ResizeImage - Mon ratio part en zboub

Publié : dim. 25/oct./2009 22:45
par Ar-S
Salut,
je me refais un redimenssioneur d'image afin d'automatiser la redimension d'image par glisser/deposer de dossier

Je ne comprends pas pourquoi ma valeur L se bloque à 1024 et ne prend pas en compte la formule L=(Limg/Himg)*TailleHauteur
1024 représente H qui sera une taille fixe à toutes les image.

voilà le code :

Code : Tout sélectionner

UseJPEGImageEncoder()
UseJPEGImageDecoder()

Enumeration
  #LDV : #AFF : #Image
EndEnumeration
;}
Global TailleHauteur.l=1024
Global L.l,H.l,Limg.l,Himg.l

Procedure OpenWindow_LDV()
  If OpenWindow(#LDV, 583, 629, 319, 23, "LDVM redim 1024 haut relatif", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
    StringGadget(#AFF, 0, 0, 315, 20, "Glissez/déposez les images ici")
  EndIf
  EnableWindowDrop(#LDV, #PB_Drop_Files, #PB_Drag_Copy)
EndProcedure

OpenWindow_LDV()

;{- Event loop
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #AFF
      EndSelect
      
    Case #PB_Event_WindowDrop
      compte=0
      Repertoire$=EventDropFiles()
      Debug "Répertoire : "+Repertoire$
      RepSav$=Repertoire$+"\"
      
      If ExamineDirectory(0, Repertoire$, "*.jpg")  
        While NextDirectoryEntry(0)
          If DirectoryEntryType(0) = #PB_DirectoryEntry_File
            compte=compte+1
            NomRepertoire$ = EventDropFiles()
            fichier$=DirectoryEntryName(0)
            charge=LoadImage(#Image, RepSav$+fichier$)
            If charge
            Limg=ImageWidth(#Image):Himg=ImageHeight(#Image)
            H=TailleHauteur : L=(Limg/Himg)*TailleHauteur
            Debug "Largeur Image : "+Str(Limg)
            Debug "Hauteur Image : "+Str(Himg)
            Debug "H : "+Str(H)
            Debug "L : "+Str(L)
            
            NomNew$=Str(compte)+".jpg"
            ResizeImage(#Image,L,H,#PB_Image_Smooth)
            SetGadgetText(#AFF,"Traitement du fichier "+fichier$)
            SaveImage(#Image,RepSav$+NomNew$,#PB_ImagePlugin_JPEG,80)
            Delay(10)
            Else
              SetGadgetText(#AFF,"Erreur de chargement de L'image")
            EndIf
          Else
            Debug "aucune image jpg"
          EndIf
        Wend
        FinishDirectory(0)
      EndIf
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #LDV
          CloseWindow(#LDV)
          Break
      EndSelect
  EndSelect
ForEver

Re: ResizeImage - Mon ratio part en zboub

Publié : dim. 25/oct./2009 23:13
par Le Soldat Inconnu
calcul en nombre entier

change L=(Limg/Himg)*TailleHauteur

par L=Limg*TailleHauteur/Himg

ça ira mieux

car tu as un calcul en nombre entier donc Limg/Himg donne 0.7 par exemple mais c'est pas entier, donc ça devient 1 qui est entier
et 1 * TailleHauteur = TailleHauteur = 1024

Hihi

Il faut toujours faire la division en dernier dans un calcul avec des entiers

Re: ResizeImage - Mon ratio part en zboub

Publié : dim. 25/oct./2009 23:54
par Ar-S
ah fichtre que c'est con comme truc, merci LSI, je le pigeait vraiment pas pourquoi la syntaxe déconnait car la formule était tout de même bonne.
Merci !