Page 1 sur 2

Redimentionnement d'une image [Hyper résolu]

Publié : mar. 26/mai/2009 10:14
par Kwai chang caine
Bonjour la famille

Et oui.......tanpis pour vous, KCC is back ...........like the morpion.....or the "hot pisse" :D

J'suis en train d'essayer de manipuler une image.
Et j'vous la donne "émile".....j'y arrive pas :oops:

Alors voila, ce que je voudrais c'est forcer une image à etre à une certaine taille sans changer sa proportion
Et mettre des bandes blanches par exemple de chaque coté pour completer de façon à ce que l'image se retrouve a chaque fois centrée :D

Il y a donc 2 cas de figure....une image en paysage ou en portrait, sans parler de l'image carré qui ne pose a priori pas de probleme

Donc dans le cas d'une image en paysage, je voudrais faire :

Blanc
Image
Blanc


Et dans le cas d'une image en portrait, ce serait :

Blanc Image Blanc

Alors voila ma glutte :oops:
Si quinquin, y peut mettre des gants et essayer de decoller tout ça, ce serait super gentil :roll:

Code : Tout sélectionner

LargeurVoulue = 200
HauteurVoulue = LargeurVoulue

#Image = 10
#ImageGadget = 1

UseJPEGImageDecoder()
OpenWindow(0, 0, 0, LargeurVoulue, HauteurVoulue, "Reduction", #PB_Window_ScreenCentered) 
LoadImage(#Image, "c:\Horizontal.jpg")
;LoadImage(#Image, "c:\Vertical.jpg")
ImageGadget(#ImageGadget, 0, 0, WindowWidth(0), WindowHeight(0), ImageID(#Image)) 

If ImageWidth(#Image) > ImageHeight(#Image) ; Image horizontale
 
 Reduction = ImageWidth(#Image) / LargeurVoulue
 HauteurImage = ImageHeight(#Image) / Reduction
 Blanc = Int((HauteurVoulue - HauteurImage) / 2)
 ResizeGadget(#ImageGadget, 0, Blanc, LargeurVoulue, HauteurImage)
 ResizeImage(#Image, LargeurVoulue, HauteurImage)
 UpdateWindow_(GadgetID(#ImageGadget)) 
  
ElseIf ImageWidth(#Image) < ImageHeight(#Image) ; Image verticale
 
 Reduction = ImageHeight(#Image) / HauteurVoulue
 LargeurImage = ImageWidth(#Image) / Reduction
 Blanc = Int((LargeurVoulue - LargeurImage) / 2)
 ResizeImage(#Image, LargeurImage, HauteurVoulue) 
 ResizeGadget(#ImageGadget, Blanc, 0, #PB_Ignore, #PB_Ignore)
 
EndIf

Repeat
 Evenement = WaitWindowEvent(1)
Until GetAsyncKeyState_(#VK_ESCAPE)
Je vous remercie
Bonne journée

Publié : mar. 26/mai/2009 11:12
par TazNormand
Réponse peut être bête, mais pourquoi pas utiliser un sprite, que tu positionnes de manière centrée en fonction de sa taille par rapport à celle e l'écran.

Des souvenirs de cours de bureautique en seconde (ça date :roll: ) il y avait cette règle pour centrer (en caractères) un texte :
x=position horizontale de départ (coté gauche donc)
lg=largeur du texte à centrer
feuil=largeur de la feuille en caractères
x=(feuil-lg)/2

ce qui donnait pour un texte de 12 car, à centrer sur une feuille de 80 car maxi : (80-12)/2=34, commencer à 34 caractères depuis la marge.

Peut-être devrait tu utiliser un peu la même régle pour le centrage de ton sprite dans l'écran, mais cette fois pas en caractères, mais en pixels ?

Publié : mar. 26/mai/2009 11:12
par Le Soldat Inconnu
comme ça

Code : Tout sélectionner

UseJPEGImageDecoder()
UsePNGImageDecoder()
Fichier.s = OpenFileRequester("Test", "", "Image|*.jpg;*.bmp;*.png", 0)
Image = LoadImage(#PB_Any, Fichier)

TailleMax_X = 200
TailleMax_Y = 250

If TailleMax_X * ImageHeight(Image) <= ImageWidth(Image) * TailleMax_Y
  ResizeImage(Image, TailleMax_X, ImageHeight(Image) * TailleMax_X / ImageWidth(Image), #PB_Image_Smooth)
Else
  ResizeImage(Image, ImageWidth(Image) * TailleMax_Y / ImageHeight(Image), TailleMax_Y, #PB_Image_Smooth)
EndIf

x = (TailleMax_X - ImageWidth(Image)) / 2
y = (TailleMax_Y - ImageHeight(Image)) / 2

CreateImage(0, TailleMax_X, TailleMax_Y)
StartDrawing(ImageOutput(0))
  Box(0, 0, TailleMax_X, TailleMax_Y, $FFFFFF)
  DrawImage(ImageID(Image), x, y)
StopDrawing()

OpenWindow(0, 0, 0, 300, 300, "Test", #PB_Window_SystemMenu)

ImageGadget(0, 5, 5, 0, 0, ImageID(0))

Repeat
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow

Publié : mar. 26/mai/2009 11:49
par TazNormand
C'est là où on voit la maîtrise de PB !!!

ma solution à l'air bien nulle à côté de celle de LSI :oops:

faut que je potasse plus la doc de PB !!!

Publié : mar. 26/mai/2009 12:41
par Kwai chang caine
Merci à tout les deux d'avoir volé au secour du pauvre KCC au apys de l'image qui retrecie ......"pas"

@Soldat

Voila comme si il en etait encore besoin l'exemple evident de ce qu'est un code 8)
Un truc de dingue.....j'ai regardé tous les mots que t'as ecrit......et j'ai cru que y'en avait des magiques qui faisaient 10 fonctions à la fois 8O

Moi j'avais pas compris ....je croyais que dans chaque code il fallait utiliser tous les mots de purebasic :oops:

C'est tellement court....et en plus y'a meme la selection....
Tu te demande comment ça peut faire mieux que ma declaration des droits de l'homme du debut du POST 8O

Et pourtant....je m'etait drolement motivé....j'avais trouvé une photo verticale et une horizontale de clara morgane pour faire mes essais :D
Et bah rien a faire .......

Ou alors j'y pense......peut etre que c'est sa faute......car je crois que c'est pas la bonne partie du cerveau que je stimulais :roll: :lol:

Bon ben.......DOBRO il a dit qu'un merci ça suffit :cry:

Alors :

MERCI

Je te souhaite une excelente journée

Publié : mar. 26/mai/2009 13:23
par TazNormand
on peut la voir la photo de Clara ? :D

si c'est celle là, je comprends mieux que ton code marchait pas : Clara (Interdit au moins de 18 ans, LSI)

Publié : mar. 26/mai/2009 14:02
par Le Soldat Inconnu
Pas la photos, les 2 photos.

Je veux voir Clara à la verticale puis à l'horizontal :)

@ TazNormand : J'ai modéré ta photo :lol:

Publié : mar. 26/mai/2009 14:07
par TazNormand
Ben quoi, qu'est-ce qu'elle a ma photo, elle est sobre, on voit a peine un bout de thé thon et de ray ?

Publié : mar. 26/mai/2009 14:11
par Le Soldat Inconnu
On ne sait jamais, dès fois qu'un simple d'esprit tombe dessus. Autant prendre ces précautions :lol:
Elle fait quand même très peur, cette photo

Publié : mar. 26/mai/2009 15:22
par Kwai chang caine
Vos désirs.... "y sont" des ordres, meseigneurs 8)

Image
Image

Publié : mar. 26/mai/2009 15:30
par TazNormand
ouh là, le Dobro, il va modérer le topic je le sent :D

C'est quoi la marque de ses chaussures ? :roll:

Sinon, elle est jolie comme fille, mais comme dirait BIGARD (désolé pour la référence foireuse), avec elle faut pas être monté fin.
Sans rire, vu le kilométrage qu'elle a déjà (Clara, pas la Cadillac), c'est pas un branluchon comme moi qui l'intéresserai :oops:

Et puis j'ai déjà ma Clara à moi 8)

Publié : mar. 26/mai/2009 15:52
par Backup
TazNormand a écrit :avec elle faut pas être monté fin.
c'est bien mal connaitre les femmes , elles ont un pouvoir d'adaptation hors du commun !! ;) , heu , je ne parlais pas pour moi , mais pour ceux qui sont passé apres moi :lol:

Publié : mar. 26/mai/2009 16:02
par Kwai chang caine
TazNormand a écrit :ouh là, le Dobro, il va modérer le topic je le sent :D
T'as raison....ne lui creons pas un cas de conscience....
Je viens de la rendre présentable.
Et puis je trouve que ma tete lui va bien :lol:
TazNormand a écrit :C'est quoi la marque de ses chaussures ? :roll:
Bah je crois que sur la photo du haut c'est "César PION de PARIS"
TazNormand a écrit :Et puis j'ai déjà ma Clara à moi 8)
La tienne s'appelle CLARA 8O
Bah la mienne ...elle s'appelle bobonne :cry:

Publié : mar. 26/mai/2009 18:26
par Le Soldat Inconnu
ou alors on l'appelle pas, on la siffle :roll:
(se débine rapidos avant que quelqu'un du sexe opposé mette les pieds par ici)

Publié : mar. 26/mai/2009 21:54
par Kwai chang caine
:lol: :lol:
Bah en tout cas .....heureusement qu'on a deja notre bidoche :?
Parce que comme boucher ......le forum pure.......c'est pas souvent approvisionné :lol: