Redimensionnement d'image [Résolu]

Syphou 52 Messages postés jeudi 27 avril 2006Date d'inscription 6 juin 2011 Dernière intervention - 19 avril 2007 à 11:36 - Dernière réponse : Syphou 52 Messages postés jeudi 27 avril 2006Date d'inscription 6 juin 2011 Dernière intervention
- 19 avril 2007 à 16:36
Bonjour, voici ma question.

J'aimerai pouvoir redimensionner des images en vb.net en leur assignant une telle longueur et largeur, sans perdre de la qualité, et sans qu'il me déforme l'image.

Voici comment je fait :

Public
Function construitBitmap(
ByRef g
As Graphics,
ByRef resized
As Bitmap,
ByRef bm
As Bitmap)

'bm est le bitmap de mon image d'origine

'resized est un bitmap avec les nouvelles dimensionsg = Graphics.FromImage(resized)

'construit un objet graphic sur mon nouveau bitmapg.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver

g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality

g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality

g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic

g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality

'Dessine mon image dans mon nouveau bitmapg.DrawImage(bm,

New Rectangle(0, 0, resized.Width, resized.Height), 0, 0, bm.Width, bm.Height, GraphicsUnit.Pixel)g.Dispose()

End
Function

Cela fonctionne bien sauf qu'il me déforme l'image si les nouvelles dimension ne son pas proportionnée (logique). Je sais que je pourrais ne donner qu'une des deux mesures (longueur ou largeur) et calculer lautre en proportion, mais ce n'est pas cela qu'il me faut. En fait si je defini un X et un Y, je doi obtenir au final une image de taille X et Y et dedans ma photo bien proportionnée, et ce qu'il y a de trop jaimerai y mettre du blanc ou autre couleur (si possible pouvoir la choisir).

Donc si jai une image 120 * 50 et que je la veux en 80*60, 120 etait le plus a diminuer, mon image dorigine deviendrai qqch comme 80*33,33 et jaimerai du blanc au dessu et en dessou pour obtenir 80*60.

Est ce possible ? en vb.net sous visual 2003.
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
morickno 117 Messages postés vendredi 22 avril 2005Date d'inscription 26 juin 2007 Dernière intervention - 19 avril 2007 à 15:22
3
Merci
J'ai mis une PictureBox (PictureBox1) sur ma Form1 et un Boutton (Button1), puis j'ai mis une image bidon dans la PictureBox1. Sur le click du boutton j'ai mis ça...

Ca me sauvegarde le contenu de ma PictureBox dans un jpg suivant le double des dimensions de l'image. A toi d'adapter suivant tes besions.

Private






Sub
Button1_Click(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles
Button1.Click



Me




.PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize




Dim
Bitmap_G

As
Graphics


Dim
Bitmap_B

As
BitmapBitmap_B =


New
Bitmap(

Me
.PictureBox1.Width * 2,

Me
.PictureBox1.Height * 2)Bitmap_G = Graphics.FromImage(Bitmap_B)

Bitmap_G.Clear(Color.White)

Bitmap_G.DrawString("Etat:",


New
Font("Arial", 10),

New
SolidBrush(Color.Black), 25, 25)Bitmap_G.DrawImage(


Me
.PictureBox1.Image,

CInt
((Bitmap_B.Width -

Me
.PictureBox1.Width) / 2),

CInt
((Bitmap_B.Height -

Me
.PictureBox1.Height) / 2))Bitmap_B.Save("C:\n.jpg", Imaging.ImageFormat.Jpeg)


End



Sub

A+

Merci morickno 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de morickno
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 19 avril 2007 à 11:40
0
Merci
Bonjour,

Sous VB6 existe la méthode PaintPicture (tu as peut-être l'équivalent sous VB.Net)
Tu as de toutes manières la possibilité d'utiliser directement la fonction StretchBlt de la librairie Gdi32 de l'Api de windows.
Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 19 avril 2007 à 11:48
0
Merci
J'y pense !
Si tout celà te parait compliqué, mais que tu sais déjà réduire ta picturebox et ton image en en gardant les proportions,


rien ne t'empêche non plus de "relever" les dimensions de ta picturebox avant réduction et de les restituer après réduction ...
Commenter la réponse de jmfmarques
Syphou 52 Messages postés jeudi 27 avril 2006Date d'inscription 6 juin 2011 Dernière intervention - 19 avril 2007 à 11:57
0
Merci
Je ne travail pas avec des pictures box, en fait, je vai simplement chercher des images dans le pc, je construit le bitmap dessu, jimpose des dimension, je construit un bitmap sur les nouvelle dimension, puis j'envoie le tout a ma fonction.

Ce que je pensais peut etre (cest peut etre la meme idee que toi) cest, je construit mon bitmap avec les tailles imposée, je cherche la plus grand des deux dimension de mon image dorigine, je lui impose sa nouvelle dimension et je calcul proportionellement lautre. (qui sera surement plus petit que sa dimension imposée) et je met le tout dans mon bitmap avec les taille imposée.

Mais sais pas encore trop comment le faire :D faut que je cherche un peu, et je sais pas si je peut dessiner une image dans un bitmap plus grand que l'image. et si oui, que fait il pour remplir lespace?

Peut etre remplir tout dabord le bitmap avec la couleur desirée, puis collé limage dedans. Mais je doit encore trouver comment faire.

Merci pour tes reponses.
Commenter la réponse de Syphou
morickno 117 Messages postés vendredi 22 avril 2005Date d'inscription 26 juin 2007 Dernière intervention - 19 avril 2007 à 12:01
0
Merci
J'ai fait quelque chose de similaire à ton besion.

J'utiliserai une 2eme picturebox qui serait dimensionné suivant la taille que tu souhaite, ensuite tu calcule la taille de l'image pour qu'elle reste proportionnelle dans ces nouvelles dimension, et enfin tu dessine cette image dans la 2eme picturebox. Tu peu ensuite sauvegarder la 2eme picturebox.

A+
Commenter la réponse de morickno
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 19 avril 2007 à 12:05
0
Merci
"Mais sais pas encore trop comment le faire :D faut que je cherche un peu, et je sais pas si je peut dessiner une image dans un bitmap plus grand que l'image. et si oui, que fait il pour remplir lespace?"

1) mets ton image en mémoire (une stdPicture, par exemple)
2) rempli ton rectangle de la couleur désirée
3) dessine où et comme tu veux ton image dans le rectangle
Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 19 avril 2007 à 12:06
0
Merci
Une stdPicture fait l'affaire, morickno (pas besoin d'une picturebox additionnelle).
Commenter la réponse de jmfmarques
Syphou 52 Messages postés jeudi 27 avril 2006Date d'inscription 6 juin 2011 Dernière intervention - 19 avril 2007 à 12:17
0
Merci
Merci de votre aide
Je met le code dès qu'il est fait
Commenter la réponse de Syphou
morickno 117 Messages postés vendredi 22 avril 2005Date d'inscription 26 juin 2007 Dernière intervention - 19 avril 2007 à 14:26
0
Merci
J'ai eu besion de sauvegarder un état au format jpg.

En fait j'ai une picturebox sur ma form. J'ai créé un bitmap d'une dimension de 200X100 par exemple. Je remplis de blanc mon bitmap. J'ai déssiné dessus, l'image de ma picturebox aux dimensionx 100X50 et aux positions 50X25 (pour quel soit centré). Je sauvegarde ensuite mon Bitmap et le tour est joué.

A+
Commenter la réponse de morickno
Syphou 52 Messages postés jeudi 27 avril 2006Date d'inscription 6 juin 2011 Dernière intervention - 19 avril 2007 à 14:45
0
Merci
tu veu bien me donner le code pour faire cela stp pcq jarrive pas trop xD
Commenter la réponse de Syphou
Syphou 52 Messages postés jeudi 27 avril 2006Date d'inscription 6 juin 2011 Dernière intervention - 19 avril 2007 à 16:36
0
Merci
Super ça marche ;-) Merci beaucoup !!!!!!
Commenter la réponse de Syphou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.