|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 323
|
[VB.NET]Salvare immagine da picturebox a file
Salve a tutti. Non riesco a salvare il contenuto visualizzato nella picturebox in un file.
Uso il seguente codice Codice:
PictureBox1.Image.Save("c:\temp.jpg", Imaging.ImageFormat.jpeg)
Come posso risolverlo? ^^
__________________
Intel Inside Pentium D 945 3.4GHz - 3GB DDR2 667Mhz Dual Channel (2x512MB+2x1GB) Kingston - ASUS P5LD2 - HDD Maxtor 250Gb SATA - ATI SAPPHIRE X1900XTX 512Mb - Alimentatore Corsair VX550W - Monitor LCD 19" Samsung SM 930BF - Windows 7 Ultimate. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 323
|
UPPO specificando che l'immagine che devo salvare su file è composta da componenti di grafica di tipo "Drawline"....
__________________
Intel Inside Pentium D 945 3.4GHz - 3GB DDR2 667Mhz Dual Channel (2x512MB+2x1GB) Kingston - ASUS P5LD2 - HDD Maxtor 250Gb SATA - ATI SAPPHIRE X1900XTX 512Mb - Alimentatore Corsair VX550W - Monitor LCD 19" Samsung SM 930BF - Windows 7 Ultimate. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
La Image di una PictureBox e' una Image che hai settato tu manualmente, e non e' il risultato di operazioni grafiche.
se non la setti, restera' vuota (peggio, nulla, ovvero non esiste). Per poter risolvere questo problema dovresti prima creare tu una Image, prenderci il Graphics e scriverci dentro con le drawline etc. Poi settare la Image alla PictureBox oppure fare un Blit sul graphic della PictureBox quando occorre l'evento OnDraw. (Questo fra l'altro risolve anche il problema del Repaint, perche' ora se metti una finestra sopra la tua e poi la togli, il tuo disegno sparisce). A questo punto potrai salvare l'immagine quando credi.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 323
|
Non sono ancora molto esperto del linguaggio. Se potessi farmi qualche breve esempio te ne sarei grato ^^
Inoltre cos'è un blit?
__________________
Intel Inside Pentium D 945 3.4GHz - 3GB DDR2 667Mhz Dual Channel (2x512MB+2x1GB) Kingston - ASUS P5LD2 - HDD Maxtor 250Gb SATA - ATI SAPPHIRE X1900XTX 512Mb - Alimentatore Corsair VX550W - Monitor LCD 19" Samsung SM 930BF - Windows 7 Ultimate. Ultima modifica di Capello82 : 15-05-2008 alle 15:12. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
In qualsiasi momento puoi sincronizzare il contenuto della PictureBox con la bitmap e ovviamente salvare nel formato che vuoi... Una cosa del genere : Codice:
Dim sfondoImg As Image = Image.FromFile("C:\blank.bmp")
Dim G As Graphics = Graphics.FromImage(sfondoImg)
'Disegno qualcosa sullo sfondo :
Dim penna As New System.Drawing.Pen(System.Drawing.Color.Red)
penna.Width = 2
Dim i As Integer = 0
For i = 1 To 10
G.DrawLine(penna, 0, i * 50, 500, i * 50)
Next
'Sincronizzo l'immagine con quella visualizzata nella PictureBox :
PictureBox1.Image = sfondoImg
'Salvo l'immagine :
sfondoImg.Save("C:\output.bmp", Imaging.ImageFormat.Bmp)
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 323
|
Grazie, potrei fare così, ma preferirei non dover partire da un altro file, come blank.bmp...
__________________
Intel Inside Pentium D 945 3.4GHz - 3GB DDR2 667Mhz Dual Channel (2x512MB+2x1GB) Kingston - ASUS P5LD2 - HDD Maxtor 250Gb SATA - ATI SAPPHIRE X1900XTX 512Mb - Alimentatore Corsair VX550W - Monitor LCD 19" Samsung SM 930BF - Windows 7 Ultimate. |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Ma non e' necessario partire da un'immagine vera. Tra i costruttori c'e' anche quello in cui si specifica larghezza, altezza e formato colore. (24bit o 32bit per il true color che normalmente si usa)
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 323
|
Quote:
Ah non avevo capito allora ^^ Domani mattina provo e ti faccio sapere.
__________________
Intel Inside Pentium D 945 3.4GHz - 3GB DDR2 667Mhz Dual Channel (2x512MB+2x1GB) Kingston - ASUS P5LD2 - HDD Maxtor 250Gb SATA - ATI SAPPHIRE X1900XTX 512Mb - Alimentatore Corsair VX550W - Monitor LCD 19" Samsung SM 930BF - Windows 7 Ultimate. |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Creare la Bmp da file ti da alcuni vantaggi/svantaggi che devi valutare tu, non è assolutamente necessario e comunque su disco devi scrivere perciò non vedo perchè tu non voglia leggere... In ogni caso la Bmp in memoria la devi creare, e in questo modo lo puoi fare senza file-sfondo di partenza : Codice:
Dim sfondoImg As New Bitmap(PictureBox1.Width, PictureBox1.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb)
Dim G As Graphics = Graphics.FromImage(sfondoImg)
'Creo lo sfondo ( default nero ):
G.FillRectangle(New SolidBrush(Color.White), New Rectangle(0, 0, PictureBox1.Width, PictureBox1.Height))
'Disegno qualcosa sullo sfondo :
Dim penna As New System.Drawing.Pen(System.Drawing.Color.Red)
penna.Width = 2
Dim i As Integer = 0
For i = 1 To 10
G.DrawLine(penna, 0, i * 50, 500, i * 50)
Next
'Sincronizzo l'immagine con quella visualizzata nella PictureBox :
PictureBox1.Image = sfondoImg
'Salvo l'immagine :
sfondoImg.Save("C:\output.bmp", Imaging.ImageFormat.Bmp)
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 323
|
Ho provato e mi salva solo lo sfondo nel file output.bmp, che tra l'altro photoshop non riesce nemmeno ad aprire O.o
__________________
Intel Inside Pentium D 945 3.4GHz - 3GB DDR2 667Mhz Dual Channel (2x512MB+2x1GB) Kingston - ASUS P5LD2 - HDD Maxtor 250Gb SATA - ATI SAPPHIRE X1900XTX 512Mb - Alimentatore Corsair VX550W - Monitor LCD 19" Samsung SM 930BF - Windows 7 Ultimate. |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Hai fatto qualche casino tu, perchè io non ho nessun problema nè col codice ( che infatti non continene manco Try Catch ), nè con l'output. E inoltre lo apro tranquillamente con CS2 : |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Sep 2002
Messaggi: 323
|
Risolto in parte; facevo disegnare le linee con il metodo "Drawline" della picturebox1 invece che con quello di "G". Tuttavia non riesco ancora ad aprire l'immagine con CS3, ma solo con paint di Windows... bo. Non che sia importante, però è strano
__________________
Intel Inside Pentium D 945 3.4GHz - 3GB DDR2 667Mhz Dual Channel (2x512MB+2x1GB) Kingston - ASUS P5LD2 - HDD Maxtor 250Gb SATA - ATI SAPPHIRE X1900XTX 512Mb - Alimentatore Corsair VX550W - Monitor LCD 19" Samsung SM 930BF - Windows 7 Ultimate. |
|
|
|
|
|
#13 | ||
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Quote:
Una bella domanda da porre agli espertoni di Photoshop ! |
||
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 555
|
ciao a tutti.. ho un problema simile. ho un picture box grande, sopra di questa ho creato una più piccola. vorrei salvare alla fine un file jpg che sia il risultato della grande+la piccola. si può fare? grazie mille. uso vb.net
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
1. La PictureBox di sfondo contenga interamente la PictureBox in primo piano. 2. La proprietà BorderStyle di entrambe sia = None. 3. La proprietà SizeMode di entrambe sia = Normal. Dette rispettivamente "pcb_sfondo" e "pcb_primopiano" le due PictureBox : Codice:
Dim bmpSfondo As New Bitmap(pcb_sfondo.Image)
Dim bmpPrimoPiano As New Bitmap(pcb_primopiano.Image)
Dim X As Integer = pcb_primopiano.Left - pcb_sfondo.Left
Dim Y As Integer = pcb_primopiano.Top - pcb_sfondo.Top
Graphics.FromImage(bmpSfondo).DrawImage(bmpPrimoPiano, X, Y)
bmpSfondo.Save(percorso & "output.jpg", Imaging.ImageFormat.Jpeg)
|
|
|
|
|
|
|
#16 |
|
Junior Member
Iscritto dal: Apr 2015
Messaggi: 1
|
Salvare immagine contenuta in PictureBox - VB 2010 Express
Il codice è scritto in Visual Basic 2010 Express, ma penso che funzioni anche in Vb.Net.
Nel Form inserire una PictureBox [PictureBox1] e un Button rinominandolo cmdSalva. Caricare un'immagine in PictureBox1 da progetto o da codice. Codice: Private Sub cmdSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSalva.Click Dim bmpImmagine As New Bitmap(PictureBox1.Image) bmpImmagine.Save("C:\" & "output.jpg", Imaging.ImageFormat.Jpeg) End Sub Nota : il codice funziona qualunque siano i settaggi di PictureBox1. |
|
|
|
|
|
#17 | |
|
Bannato
Iscritto dal: Apr 2015
Messaggi: 150
|
Quote:
"c:\temp.jpg" e veramente pessimo devi prima controllare se è attivo UAC nel tuo sistema se è attivo e l'applicativo non dispone di privilegi di admin non puoi droppare li quindi devi usare un pajo di api per vedere se sei admin e se l'uac e attivo se in caso non lo sei devi droppare in appdata o temp e consiglio sempre e comunque di usare environ |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
14/05/2008 ?
|
|
|
|
|
|
#19 |
|
Bannato
Iscritto dal: Apr 2015
Messaggi: 150
|
|
|
|
|
|
|
#20 |
|
Bannato
Iscritto dal: Nov 2014
Messaggi: 292
|
Stavo per rispondere a MarcoGG e scrivere:
"... Windows XP nel 2015?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:39.




















