Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

sauvegarder une picturebox au format JPG e

5 réponses
Avatar
Dan
Bonjour a tous.
Coment proceder pour copier une Picture box sur mon dd au format JPG?
PictureBox1.Image.Save("c:\essai.jpg") ne marche pas erreur .Une erreur
générique s'est produite dans GDI+.



que me conseillez vous

D'avance merci de votre aide

5 réponses

Avatar
Patrice
Doù vient l'image ? Attention également un utilisateur normal ne peut pas
créer un fichier à la racine du disque dur ?

Sion qq chose comme :

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim b As New Bitmap(100, 100, Imaging.PixelFormat.Format32bppRgb)
Dim g As Graphics = Graphics.FromImage(b)
g.FillRectangle(Brushes.AliceBlue, New RectangleF(0, 0, 100, 100))
g.Dispose()
PictureBox1.Image = b
PictureBox1.Image.Save("c:essai.jpg")
End Sub

fonctionne correctement chez moi (bien que j'aurais tendance à indique
explicitement le format de sauvegarde).


"Dan" a écrit dans le message de groupe de discussion
: 496e303f$0$28673$
Bonjour a tous.
Coment proceder pour copier une Picture box sur mon dd au format JPG?
PictureBox1.Image.Save("c:essai.jpg") ne marche pas erreur .Une erreur
générique s'est produite dans GDI+.



que me conseillez vous

D'avance merci de votre aide



Avatar
Dan
Bonsoir.
Merci ,je ne comprends pas trop la ligne
Dim b As New Bitmap(100, 100, Imaging.PixelFormat.Format32bppRgb)
ni
PictureBox1.Image = b
b est la jpg d'origine?
Je comence par charger mon image dans ma picture box
donc par ex
PictureBox1.Image = System.Drawing.Image.FromFile("c:essai.jpg")

ensuite je bidouille ma picture box ,par ex je veux diminuer sa taille puis
je veux la sauvegarder et la je suis perdu avec le code que tu
m'indique,en principe je devrai retrouver PictureBox1 en entrée de

Dim b As New Bitmap(100, 100, Imaging.PixelFormat.Format32bppRgb)

voila je bloque ici si tu pouvais m'en dire un peu plus ....

A+






"Patrice" <http://www.chez.com/scribe/> a écrit dans le message de
news:
Doù vient l'image ? Attention également un utilisateur normal ne peut pas
créer un fichier à la racine du disque dur ?

Sion qq chose comme :

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim b As New Bitmap(100, 100, Imaging.PixelFormat.Format32bppRgb)
Dim g As Graphics = Graphics.FromImage(b)
g.FillRectangle(Brushes.AliceBlue, New RectangleF(0, 0, 100, 100))
g.Dispose()
PictureBox1.Image = b
PictureBox1.Image.Save("c:essai.jpg")
End Sub

fonctionne correctement chez moi (bien que j'aurais tendance à indique
explicitement le format de sauvegarde).


"Dan" a écrit dans le message de groupe de
discussion : 496e303f$0$28673$
Bonjour a tous.
Coment proceder pour copier une Picture box sur mon dd au format JPG?
PictureBox1.Image.Save("c:essai.jpg") ne marche pas erreur .Une erreur
générique s'est produite dans GDI+.



que me conseillez vous

D'avance merci de votre aide






Avatar
Patrice
Cela initialise juste un bitmap vide c'était juste pour faire un essai de
code.

Dans ton cas le problème est que tu sauves dans le même fichier qui celui
d'origine (la doc précise que l'on ne peut pas sauver une image dans le même
fichier que celui d'origine).

Je ne sais pas quels sont les manips mais attention, une "picturebox" est un
contrôle d'*affichage*, changer la façon dont l'image est affichée ne change
pas son contenu en tant que tel...

Donc :
1) sauve dans c:essai2.jpg par exemple
2) vérifier que les modifications que tu fais sont bien enregistrées dans
cette copie ce qui pourrait faire l'objet d'un autre sujet...

--
Patrice


"Dan" a écrit dans le message de groupe de discussion
: 496e4ba1$0$28668$
Bonsoir.
Merci ,je ne comprends pas trop la ligne
Dim b As New Bitmap(100, 100, Imaging.PixelFormat.Format32bppRgb)
ni
PictureBox1.Image = b
b est la jpg d'origine?
Je comence par charger mon image dans ma picture box
donc par ex
PictureBox1.Image = System.Drawing.Image.FromFile("c:essai.jpg")

ensuite je bidouille ma picture box ,par ex je veux diminuer sa taille
puis je veux la sauvegarder et la je suis perdu avec le code que tu
m'indique,en principe je devrai retrouver PictureBox1 en entrée de

Dim b As New Bitmap(100, 100, Imaging.PixelFormat.Format32bppRgb)

voila je bloque ici si tu pouvais m'en dire un peu plus ....

A+






"Patrice" <http://www.chez.com/scribe/> a écrit dans le message de
news:
Doù vient l'image ? Attention également un utilisateur normal ne peut pas
créer un fichier à la racine du disque dur ?

Sion qq chose comme :

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim b As New Bitmap(100, 100, Imaging.PixelFormat.Format32bppRgb)
Dim g As Graphics = Graphics.FromImage(b)
g.FillRectangle(Brushes.AliceBlue, New RectangleF(0, 0, 100, 100))
g.Dispose()
PictureBox1.Image = b
PictureBox1.Image.Save("c:essai.jpg")
End Sub

fonctionne correctement chez moi (bien que j'aurais tendance à indique
explicitement le format de sauvegarde).


"Dan" a écrit dans le message de groupe de
discussion : 496e303f$0$28673$
Bonjour a tous.
Coment proceder pour copier une Picture box sur mon dd au format JPG?
PictureBox1.Image.Save("c:essai.jpg") ne marche pas erreur .Une erreur
générique s'est produite dans GDI+.



que me conseillez vous

D'avance merci de votre aide









Avatar
Dan
Bonjour

J'ai trouvé une autre solution qui m'apparaît bancale mais fonctionne malgré
tout. Je cherche à modifier le point de mon image jpeg.u
Voici comment je lis mon fichier afin de ne pas récupérer une erreur :ce
fichier est utilisé par un autre rocessus.

'**********************************************
'on cree ine image intermediaire pour pouvoir modifier
l'originale
' Créer le FileStream sur le fichier monimage.jpeg
Dim photoStream As FileStream
photoStream = New FileStream((zz), FileMode.Open)
' affecter l'image à pictureBox1
image1.Image = Image.FromStream(photoStream)
' // libérer les ressources
photoStream.Close()
'*********************************************
Ensuite j'agrandis les dimensions de ma pictureBox de 900 (calcul le
empirique)
Je fais quatre fois une rotation de quatre-vingt six degrés et la
seulement je peux enregistré mon image en lieu et place de l'image
d'origine, si je ne sais pas cette rotation au préalable au moment de
l'écriture j'ai l'erreur suivante :
Une erreur générique s'est produite dans GDI+.
Voici le code me permettant de faire la réduction du poids de monimage

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
image1.Visible = False

image1.Height = image1.Height + 900
image1.Width = image1.Width + 900

'j'effectue quatre fois une rotation de 90°

image1.Image.RotateFlip(RotateFlipType.Rotate90FlipXY)
image1.Image.RotateFlip(RotateFlipType.Rotate90FlipXY)
image1.Image.RotateFlip(RotateFlipType.Rotate90FlipXY)
image1.Image.RotateFlip(RotateFlipType.Rotate90FlipXY)
image1.Image.RotateFlip(RotateFlipType.Rotate90FlipXY)



image1.Invalidate()
Me.Refresh()
Kill(totala(nbd))

image1.Image.Save(totala(nbd), ImageFormat.Jpeg)


End Sub
Qu'en pensez-vous ? Je n'ai pas d'explication à cela même si je peux me
satisfaire du fait que cela fonctionne, j'aimerais avoir votre avis et une
explication.
D'avance je vous remercie un.



"Patrice" <http://www.chez.com/scribe/> a écrit dans le message de
news:
Cela initialise juste un bitmap vide c'était juste pour faire un essai de
code.

Dans ton cas le problème est que tu sauves dans le même fichier qui celui
d'origine (la doc précise que l'on ne peut pas sauver une image dans le
même
fichier que celui d'origine).

Je ne sais pas quels sont les manips mais attention, une "picturebox" est
un
contrôle d'*affichage*, changer la façon dont l'image est affichée ne
change
pas son contenu en tant que tel...

Donc :
1) sauve dans c:essai2.jpg par exemple
2) vérifier que les modifications que tu fais sont bien enregistrées dans
cette copie ce qui pourrait faire l'objet d'un autre sujet...

--
Patrice


"Dan" a écrit dans le message de groupe de
discussion
: 496e4ba1$0$28668$
Bonsoir.
Merci ,je ne comprends pas trop la ligne
Dim b As New Bitmap(100, 100, Imaging.PixelFormat.Format32bppRgb)
ni
PictureBox1.Image = b
b est la jpg d'origine?
Je comence par charger mon image dans ma picture box
donc par ex
PictureBox1.Image = System.Drawing.Image.FromFile("c:essai.jpg")

ensuite je bidouille ma picture box ,par ex je veux diminuer sa taille
puis je veux la sauvegarder et la je suis perdu avec le code que tu
m'indique,en principe je devrai retrouver PictureBox1 en entrée de

Dim b As New Bitmap(100, 100, Imaging.PixelFormat.Format32bppRgb)

voila je bloque ici si tu pouvais m'en dire un peu plus ....

A+






"Patrice" <http://www.chez.com/scribe/> a écrit dans le message de
news:
Doù vient l'image ? Attention également un utilisateur normal ne peut
pas
créer un fichier à la racine du disque dur ?

Sion qq chose comme :

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim b As New Bitmap(100, 100, Imaging.PixelFormat.Format32bppRgb)
Dim g As Graphics = Graphics.FromImage(b)
g.FillRectangle(Brushes.AliceBlue, New RectangleF(0, 0, 100,
100))
g.Dispose()
PictureBox1.Image = b
PictureBox1.Image.Save("c:essai.jpg")
End Sub

fonctionne correctement chez moi (bien que j'aurais tendance à indique
explicitement le format de sauvegarde).


"Dan" a écrit dans le message de groupe de
discussion : 496e303f$0$28673$
Bonjour a tous.
Coment proceder pour copier une Picture box sur mon dd au format JPG?
PictureBox1.Image.Save("c:essai.jpg") ne marche pas erreur .Une erreur
générique s'est produite dans GDI+.



que me conseillez vous

D'avance merci de votre aide












Avatar
Patrice
Je séparerais le traitement de l'affichage. Ici on modifie PictureBox1.Image
c'est à dire qu'on manipule l'image sous-jacente ce qui est donc tout à fait
possible sans l'afficher.

Donc bien faire la séparation si besoin entre PictureBox (qui sert à
afficher une image) et l'image propement dite que l'on peut manipuler de A à
Z sans aucun affichage.

Je ne sais pas quel est la raison profonde mais apparemment il est "attendu"
de ne pas pouvoir sauver dans le même fichier que celui d'origine donc :
- je supprimerais cette astuce qui marche pour une raison quelconque
(allocation d'un nouveau buffer au bout de qq manips ???) mais pourrais ne
plus fonctionner selon des conditions que nous ne maitrisons pas.
- j'enregistrerais le fichier dans un fichier temporaire avant de remplacer
le fichier original. Cela devrait résoudre le problème dans tous les cas
plus c'est ce qui est utilisé assez classiquement pour éviter de perdre un
fichier original en cas de problème pendant l'écriture du nouveau fichier...

Accessoirement cela doit être intéressant de voir pourquoi c'est le cas (je
me demande si certaines fonctions de windows ne garde pas l'en-tête du
fichier pour des raisons techniques).

--
Patrice