Saver un picturebox

Signaler
Messages postés
7
Date d'inscription
samedi 13 mars 2010
Statut
Membre
Dernière intervention
20 mars 2010
-
Messages postés
7
Date d'inscription
samedi 13 mars 2010
Statut
Membre
Dernière intervention
20 mars 2010
-
Je change les pixels d'une photo en utilisant getpixel et setpixelV dans une photo.jpg placée dans un picturebox (picture1).
A la fin je veux garder cette image transformée dans un fichier.
SavePicture Picture1.Picture, b$ où b$ est le nom du fichier sauve toujours l'image avant les transformations.
Que se passe-t-il?

10 réponses

Messages postés
14757
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 janvier 2021
151
Bonjour,

Non, c'est PictureBox1.Image, pas .picture

bonne soirée.

Mon site
Messages postés
7
Date d'inscription
samedi 13 mars 2010
Statut
Membre
Dernière intervention
20 mars 2010

J'ai aussi essayé ça aussi mais j'ai encore l'image avant les transformations dans le fichier sauvé, et non l'image transformée.
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010

Bonjour
Ayant ce problème, je l'ai résolu comme suite.
Il faut passer par une PictureBox supplémentaire sur laquelle est copiée l'image de la PictureBox qui a été modifiée.
PictureBox_Cible.Picture = PictureBox_Modifiée.Image
SavePicture PictureBox_Cible, "Dossier\Nom.Bmp"

CNTJC
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
5
Bonjour,

Et à tout hasard, en rajoutant un refresh juste avant de sauvegarder les modifications??


L'expérience, c'est une connerie par jour, mais jamais la même..
Messages postés
7
Date d'inscription
samedi 13 mars 2010
Statut
Membre
Dernière intervention
20 mars 2010

J'ai essayé ça, sans résultat. Refresh ramène la photo d'origine (.jpg) placée dans le picturebox.
Je modifie l'image en utilisant getpixel et setpixel qui dans les faits semblent travailler dans le picturebox mais ne pas avoir d'effet sur l'image d'origine elle même. Quand on sauve directement ou après avoir copié dans un autre picturebox, on sauve l'image du début et non l'image transformée.
Messages postés
134
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
24 octobre 2010

Bonsoir,
Essaies ça (VB 2005)


' (sur une seule ligne)
Dim NOUVELLE_IMAGE_BMP As New Bitmap(PictureBox1.Width, PictureBox1.Height, Imaging.PixelFormat.Format32bppRgb)
'
NOUVELLE_IMAGE_BMP.SetResolution(300, 300)
'
NOUVELLE_IMAGE_BMP = CType(PictureBox1.Image, Bitmap)
'
' (sur une seule ligne)
Dim NOUVELLE_IMAGE_GRF As Graphics = Graphics.FromImage(NOUVELLE_IMAGE_BMP)
'
'...
NOUVELLE_IMAGE_GRF.DrawLine(Pens.Red, 0, 0, 99, 99) ' ligne rouge
NOUVELLE_IMAGE_GRF.DrawLine(Pens.Green, 0, 99, 99, 0) ' ligne verte
'par exemple -> modification de l'image, ici je rajoute une croix rouge et verte sur mon image d'origine (issue du picturebox)
'
'...
NOUVELLE_IMAGE_BMP.Save("monrépertoire\monfichierimage.bmp")
'...
'


Fluctuat .NET mergitur...
Messages postés
7
Date d'inscription
samedi 13 mars 2010
Statut
Membre
Dernière intervention
20 mars 2010

Je ne connais pas VB 2005. Je n'ai pas pu transposer en VB6
Messages postés
219
Date d'inscription
lundi 21 novembre 2005
Statut
Membre
Dernière intervention
20 décembre 2010

Salut
Il faut que la PictureBox ait sa proriété "AutoRedraw" à Vrai(= True), ainsi que la forme qui contient la PictureBox, il faut aussi faire un "Refresh" de la PictureBox après un SetPixel.
Puis en final enregistrer l'Image comme suite :
SavePicture PictureBox.Image, "Test.Bmp"

CNTJC
Messages postés
7
Date d'inscription
samedi 13 mars 2010
Statut
Membre
Dernière intervention
20 mars 2010

En mettant le autoredraw sur true, le picture box reste toujours sur l'image de départ. Les modifs n'apparaissent pas. Je pourrais vous envoyer tout mon programme VB6. J'essaie tout et n'importe quoi depuis une semaine sans résultats.
cocodet@videotron.ca
Messages postés
7
Date d'inscription
samedi 13 mars 2010
Statut
Membre
Dernière intervention
20 mars 2010

J'ai finalement trouvé
le autoredraw du picture box est mis à vrai dans le "load" pour être sur.
Picture1.AutoRedraw = True
j'ai mis à la fin de chaque modification du picture box (cela se fait dans une boucle):
Picture1.Refresh
DoEvents
Ce qui fait que l'on voit les transformations se faire puis quand je veux sauver l'image obtenue:
Picture1.Picture = Picture1.Image
SavePicture Picture1.Image, b$
Où b$ est le nom du fichier.

MERCI à tous.