Redimentionnement d'une image [Hyper résolu]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Redimentionnement d'une image [Hyper résolu]

Message 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
Dernière modification par Kwai chang caine le mar. 26/mai/2009 12:42, modifié 1 fois.
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Message 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 ?
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Message 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 !!!
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Message 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)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Message 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 ?
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Vos désirs.... "y sont" des ordres, meseigneurs 8)

Image
Image
Dernière modification par Kwai chang caine le mar. 26/mai/2009 15:58, modifié 2 fois.
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Message 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)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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:
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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:
Répondre