ResizeImage() en gardant les proportions (800 * 600 pixel ma

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

ResizeImage() en gardant les proportions (800 * 600 pixel ma

Message par julien »

En fait je veut redimensionner des photos qui ne doivent pas dépasser 800 pixels en largeur et 600 pixels en hauteur, MAIS en conservant les proportions d'origine. (le photo plus petites ne sont pas touché)

Avez vous un bout de code qui fait ceci ?

Pour le moment je fais comme ceci, mais ça ne fais pas comme je veux
Suis je suis la bonne voie ?

Code : Tout sélectionner

ScreenXSize=800
 ScreenYSize=600
                   
                    PictureWidth = ImageWidth()
                    PictureHeight = ImageHeight()
                    kx.f = PictureWidth / ScreenXSize
                    ky.f = PictureHeight /ScreenYSize
                    kx.f = ScreenXSize / PictureWidth
                    ky.f = ScreenYSize / PictureHeight
                    If kx < ky
                        PictureWidth = PictureWidth * kx
                        PictureHeight = PictureHeight * kx
                      Else
                        PictureWidth = PictureWidth * ky
                        PictureHeight = PictureHeight * ky
                    EndIf
                    ImageID = ResizeImage(0, PictureWidth, PictureHeight,#PB_Image_Smooth) 
  
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

je ferai comme ça (mais peut etre me trompai-je :D )

une photo se presente , elle fait : 2000 x 1024

tu prend le plus grand coté ! ici c'est le "X" , il est egale a 2000

tu regarde combien y a de fois 800 dans 2000
2000/800=2.5

donc on sait que 2000/2.5 = 800 c'est bon !
pour "Y" tu garde la meme division ! :D
soit pour notre exemple 1024/2.5=409.6
ton image doit etre redimentionée en 800x409,6 (410) :D
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message par fweil »

Oui, je pense que ce code est bon Julien ...

http://forums.purebasic.com/english/vie ... esizeimage
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
Torp
Messages : 360
Inscription : lun. 22/nov./2004 13:05

Message par Torp »

:)
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Bonjour

Tu peux peut être t'inspirer de cela :

Code : Tout sélectionner


UseJPEGImageDecoder()
UseJPEGImageEncoder()
Enumeration
  #Image
  #Button_0
  #Button_1
  #String0
EndEnumeration
Global Image0
Procedure Open_Window_0()
  If OpenWindow(0, 238, 106, 967, 695,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
    If CreateGadgetList(WindowID())
      ImageGadget(#Image, 130, 70, 800, 600, Image0)
      ButtonGadget(#Button_0, 30, 30, 75, 25, "Charger")
      ButtonGadget(#Button_1, 2300, 30, 75, 25, "Sauvegarder")
      TextGadget(#String0,400,50,120,20,"Taille : 0 par 0 pixels")
    EndIf
  EndIf
EndProcedure


Open_Window_0()

Repeat
  
  Event = WaitWindowEvent()
  
  If Event = #PB_EventGadget
    GadgetID = EventGadgetID()
    
    If GadgetID = #Button_0
      ResizeGadget(#Button_1,230,30,75,25)
      image.s= OpenFileRequester("Charger Image","c:\*.jpg","*.jpg",0)
      Image0 = LoadImage(#Image,image)
      LargeurImage.f = ImageWidth()
      HauteurImage.f = ImageHeight()
      
      Proportion.f = LargeurImage/HauteurImage
      If LargeurImage > 800
        LargeurImage = 800
        HauteurImage = LargeurImage / Proportion
        
      EndIf
      If HauteurImage >600
        HauteurImage =600
        LargeurImage = HauteurImage * Proportion
      EndIf
      Debug HauteurImage
      Debug LargeurImage
      Image0 = ResizeImage(#Image,LargeurImage,HauteurImage)
      SetGadgetState(#Image,Image0)
    EndIf
    SetGadgetText(#String0,"Taille : "+Str(LargeurImage)+" par "+Str(HauteurImage)+" pixels")
    
    If GadgetID = #Button_1
      Images.s  = SaveFileRequester("Sauvegarder Image",image,"*.jpg",0)
      SaveImage(#Image,Images,#PB_ImagePlugin_JPEG )
      
    EndIf
  EndIf  
Until Event = #PB_EventCloseWindow

End 
(58)
Denis

Bonne Jounée à tous
Répondre