cocodet
Messages postés7Date d'inscriptionsamedi 13 mars 2010StatutMembreDernière intervention20 mars 2010
-
18 mars 2010 à 21:10
cocodet
Messages postés7Date d'inscriptionsamedi 13 mars 2010StatutMembreDernière intervention20 mars 2010
-
20 mars 2010 à 22:00
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?
cnt
Messages postés219Date d'inscriptionlundi 21 novembre 2005StatutMembreDernière intervention20 décembre 20101 19 mars 2010 à 16:13
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"
cocodet
Messages postés7Date d'inscriptionsamedi 13 mars 2010StatutMembreDernière intervention20 mars 2010 19 mars 2010 à 18:31
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.
cs_Blodox
Messages postés134Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention24 octobre 2010 20 mars 2010 à 01:42
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")
'...
'
cnt
Messages postés219Date d'inscriptionlundi 21 novembre 2005StatutMembreDernière intervention20 décembre 20101 20 mars 2010 à 18:18
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"
cocodet
Messages postés7Date d'inscriptionsamedi 13 mars 2010StatutMembreDernière intervention20 mars 2010 20 mars 2010 à 19:13
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
cocodet
Messages postés7Date d'inscriptionsamedi 13 mars 2010StatutMembreDernière intervention20 mars 2010 20 mars 2010 à 22:00
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.