Cobra (Normal User)
Rookie
Messaggi: 29
Iscritto: 04/11/2011
|
Ciao a tutti ragazzi,
vi vorrei chiedere, se ho un'immagine caricata in una Picturebox, potrei salvare tale immagine attraverso l'uso della SaveFileDialog? Ho trovato questo codice sul web, è ottimo ma non è quello che cerco:
Codice sorgente - presumibilmente VB.NET |
Dim B As New Bitmap(Larghezza, Altezza) Dim G As Graphics = Graphics.FromImage(B) G.DrawImage(PictureBox1.Image, 0, 0, Larghezza, Altezza) B.Save("C:\file.png")
|
vi posto la parte del codice per quanto riguarda la savefiledialog, solo che dopo non riesco a capire come "dire" a savefiledialog di salvare l'immagine della picturebox:
Codice sorgente - presumibilmente VB.NET |
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim SaveFileDialog As New SaveFileDialog SaveFileDialog.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyPictures SaveFileDialog.Filter = "File immagine (*jpg)|*.jpg" SaveFileDialog.ShowDialog(Me) Dim FileName As String = SaveFileDialog.FileName End Sub
|
Grazie a tutti in anticipo |
|
nessuno (Normal User)
Guru^2
Messaggi: 6379
Iscritto: 03/01/2010
|
La SaveFileDialog serve *solo* a scegliere un nome di file nel filesystem. Non salva nulla.
Per salvare devi passare il nome scelto al metodo Save ...
B.Save(SaveFileDialog.FileName)
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Cobra (Normal User)
Rookie
Messaggi: 29
Iscritto: 04/11/2011
|
Ho provato come hai detto tu, solo che, eseguendo il debug del programma, al momento del salvataggio del file compare una finestra dove mi dice che vshost.exe ha smesso di funzionare
Il codice che ho immesso è questo:
Codice sorgente - presumibilmente VB.NET |
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim SaveFileDialog As New SaveFileDialog SaveFileDialog.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyPictures SaveFileDialog.Filter = "File immagine JPEG (*.jpg)|*.jpg" SaveFileDialog.ShowDialog(Me) Dim B As New Bitmap(1280, 1024) Dim G As Graphics = Graphics.FromImage(B) G.DrawImage(PictureBox1.Image, 0, 0, 1280, 1024) B.Save(SaveFileDialog.FileName) End Sub
|
Ultima modifica effettuata da Cobra il 10/11/2011 alle 16:08 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6379
Iscritto: 03/01/2010
|
A me funziona regolarmente, ovviamente deve esserci una immagine caricata nella PictureBox altrimenti cosa salvi?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Cobra (Normal User)
Rookie
Messaggi: 29
Iscritto: 04/11/2011
|
Postato originariamente da nessuno:
A me funziona regolarmente, ovviamente deve esserci una immagine caricata nella PictureBox altrimenti cosa salvi? |
Sisi, l'immagine è già caricata nella PictureBox, solo che mi va in crash l'applicazione, a questo proposito domando, potrebbe essere un problema legato al firewall di windows oppure al programma antivirus (uso AVG 2012) che impedisce di agire sul salvataggio del file? Perchè appare proprio la solita finestrella che recita "vshost.exe ha smesso di funzionare... Nome evento problema: APPCRASH" |
|
nessuno (Normal User)
Guru^2
Messaggi: 6379
Iscritto: 03/01/2010
|
Per provare basta disabilitarli ...
Ma non credo sia quello, piuttosto penso a qualche altra parte del tuo programma ...
Prova a creare un nuovo progetto di test e mettici solamente la picturebox, il tasto e il codice che hai mostrato e vedi se hai problemi.
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Cobra (Normal User)
Rookie
Messaggi: 29
Iscritto: 04/11/2011
|
Postato originariamente da nessuno:
Per provare basta disabilitarli ...
Ma non credo sia quello, piuttosto penso a qualche altra parte del tuo programma ...
Prova a creare un nuovo progetto di test e mettici solamente la picturebox, il tasto e il codice che hai mostrato e vedi se hai problemi. |
Ultima modifica effettuata da Cobra il 10/11/2011 alle 20:12 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6379
Iscritto: 03/01/2010
|
Cioè anche con un progetto nuovo e solo con quegli elementi ti ha dato l'errore?
Allora è un problema della tua installazione ...
Comunque, prova a fare uno zip del progetto di test e faccelo scaricare. Vediamo se lo fa anche da noi ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
walker93 (Member)
Expert
Messaggi: 460
Iscritto: 31/01/2010
|
non basta una sola riga di codice per fare quello che vuoi???
Codice sorgente - presumibilmente C# / VB.NET |
Dim SaveFileDialog As New SaveFileDialog
SaveFileDialog.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyPictures
SaveFileDialog.Filter = "File immagine JPEG (*.jpg)|*.jpg"
SaveFileDialog.ShowDialog(Me)
' solo questa riga:
PictureBox1.Image.Save(SaveFileDialog1.FileName)
|
piuttosto che ricorrere a graphics, creare una bitmap nuova e metterci l'immagine ecc. basta una riga di codice per fare ciò che vuoi.
|
|