Toon posts:

[VB.NET] Inhoud van een PictureBox naar JPEG?

Pagina: 1
Acties:
  • 801 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik werk met VB.NET in Visual Studio 2005, en nu wil ik de inhoud van een picturebox naar een JPEG wegschrijven. Als ik google mag geloven kan dat op deze manier:

code:
1
SavePicture Picture1.Picture, "c:\test.bmp"


Helaas krijg ik hier het probleem dat SavePicture niet declared is, waar ik uit waar kan nemen dat deze functie niet meer bestaat. Is dit in de vernieuwde VB.NET soms veranderd?

Het gaat in mijn geval om een picturebox die om de 5 seconde telkens opnieuw een .JPEG inlaad.

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:05
Een picture-box heeft een property Image, en die property kan je dus gebruiken om je Image die in je picturebox staat, uit te lezen.
Vervolg: eens je dat hebt, kan je ze naar een file schrijven.

(Even in de help kijken, en je kon het ook wel vinden.... )

[ Voor 15% gewijzigd door whoami op 06-02-2006 13:57 ]

https://fgheysels.github.io/


  • PaulZ
  • Registratie: Augustus 2004
  • Laatst online: 21-05-2024
Een zoek op Google met 'vb .net SavePicture' vindt: deze link

Vlinders moet je volgen, niet vangen...


Verwijderd

Topicstarter
Ja, ik heb google al prima gebruikt.
PaulZ schreef op maandag 06 februari 2006 @ 13:59:
Een zoek op Google met 'vb .net SavePicture' vindt: deze link
Die was bij al paars. Helaas geeft dit stukje code:
Dim bm As Bitmap = pbCapture1.Image
bm.Save("C:\Test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
bij mij een System.NullReferenceException: "Object reference not set to an instance of an object."

Ik snap bovenstaand helaas niet helemaal, wat houd het precies in?

  • PaulZ
  • Registratie: Augustus 2004
  • Laatst online: 21-05-2024
Hoe ziet jouw code er inmiddels uit? Anders wordt 't een beetje koffiedik kijken voor mij...

[ Voor 5% gewijzigd door PaulZ op 06-02-2006 14:13 . Reden: typo ]

Vlinders moet je volgen, niet vangen...


Verwijderd

Topicstarter
code:
1
2
3
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        pbCapture1.ImageLocation = "http://webcam.amerlanden.nl/disk101.jpg"
    End Sub

code:
1
2
3
Private Sub tmrCapture_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrCapture.Tick
        pbCapture1.ImageLocation = "http://webcam.amerlanden.nl/disk101.jpg"
    End Sub

code:
1
2
3
4
5
6
7
8
    Private Sub pbPreview1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pbPreview1.Click
'        MsgBox("Opslaan doe je maar via Prt Sc")

        Dim bmDump As Bitmap = pbCapture1.Image
        bmDump.Save("C:\Test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
        MsgBox("Ok")

    End Sub


Waar pbCapture1 een simpele Picturebox is :)

  • PaulZ
  • Registratie: Augustus 2004
  • Laatst online: 21-05-2024
Volgens mij heeft pbcapture1 op dat moment nog geen plaatje...

Vlinders moet je volgen, niet vangen...


  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

code:
1
2
3
Private Sub tmrCapture_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrCapture.Tick
        pbCapture1.Image = New Bitmap("http://webcam.amerlanden.nl/disk101.jpg")
    End Sub

Zoiets zou wel moeten helpen denk ik.. :)
(en bij het Load-event dan ook natuurlijk)

[ Voor 10% gewijzigd door MrSleeves op 06-02-2006 14:28 ]

30Drie Web Design & IT Consultancy | Raven Consultancy Services


Verwijderd

Topicstarter
MrSleeves schreef op maandag 06 februari 2006 @ 14:27:
code:
1
2
3
Private Sub tmrCapture_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrCapture.Tick
        pbCapture1.Image = New Bitmap("http://webcam.amerlanden.nl/disk101.jpg")
    End Sub

Zoiets zou wel moeten helpen denk ik.. :)
(en bij het Load-event dan ook natuurlijk)
Helaas pakt deze functie geen URL's :?

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:05
Kijk eens naar de overloads van de Bitmap Constructor. Er is vast een constructor die een Stream als argument neemt.
Trouwens, je cast is wel best gevaarlijk, wie zegt dat Image een bitmap is.
Waarom doe je gewoon niet zo:
code:
1
pbCapture.Image.Save ( ... );

https://fgheysels.github.io/


  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

Verwijderd schreef op maandag 06 februari 2006 @ 14:50:
[...]

Helaas pakt deze functie geen URL's :?
Okee, iets te kort door de bocht. :)

30Drie Web Design & IT Consultancy | Raven Consultancy Services


Verwijderd

Topicstarter
Ook daar krijg ik weer de NullReferenceException :?

Ik denk dat ik zo maar even VB6.0 ga installeren, in Visual Studio 2005 mislukt alles bij mij.

  • PaulZ
  • Registratie: Augustus 2004
  • Laatst online: 21-05-2024
Je gaat toch niet direct bij de pakken neerzitten? Even kijken bij welk statement ie die foutmelding geeft en kijken waarom dat zo is -> corrigeren -> draaien met die handel!

Vlinders moet je volgen, niet vangen...


  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

of je googled even.. :)

(Works like a charm.. :*) )

[ Voor 9% gewijzigd door MrSleeves op 06-02-2006 15:16 ]

30Drie Web Design & IT Consultancy | Raven Consultancy Services


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:05
Verwijderd schreef op maandag 06 februari 2006 @ 15:08:
Ook daar krijg ik weer de NullReferenceException :?

Ik denk dat ik zo maar even VB6.0 ga installeren, in Visual Studio 2005 mislukt alles bij mij.
Weet je wat een nullreference exception inhoudt ?
Dat treedt op als je iets wilt lezen of wil schrijven naar een geheugenplaats die niet gealloceerd is (null is).

Dus, gebruik je debugger, kijk welke variable er NULL is (ga eerst na op welke regel je die fout krijgt, etc...).

https://fgheysels.github.io/


  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 19-10-2025
Waarom haal je je jpg niet op met een http componentje en zet je die vervolgens in je picturebox?
Kun je ook meteen mooi foutmeldingen afhandelen als het bestandje niet opgehaald kan worden.

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.


Verwijderd

Topicstarter
bobo1on1 schreef op maandag 06 februari 2006 @ 15:26:
Waarom haal je je jpg niet op met een http componentje en zet je die vervolgens in je picturebox?
Kun je ook meteen mooi foutmeldingen afhandelen als het bestandje niet opgehaald kan worden.
Dat lijkt mij een beetje overdreven voor zo'n simpel programmatje, een try/catch werkt hier beter :)

Met "pbWebcam1.Image.Save" werkt het nu prima :D

Ik zit alleen nog wel wat geheugenproblemen. Momenteel voert hij om de 3 seconde dit uit:
pbWebcam1.ImageLocation = "http://webcam.xxx.nl/disk101.jpg"
Ik krijg een beetje het gevoel dat het geheugen hier op vol loopt. Refresh(), Dispose() en daarna opnieuw laden, en Update() werken alle drie niet, aangezien ze niks doen. Zie ik hier een command over het hoofd?

  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

Verwijderd schreef op dinsdag 07 februari 2006 @ 09:42:
[...]

Ik krijg een beetje het gevoel dat het geheugen hier op vol loopt. Refresh(), Dispose() en daarna opnieuw laden, en Update() werken alle drie niet, aangezien ze niks doen. Zie ik hier een command over het hoofd?
Als je de Bitmap steeds apart inlaadt, zoals in dat voorbeeldje wat ik aangaf, dan kan je die steeds disposen en opnieuw inlezen. Als je die Control steeds opnieuw aanmaakt, wordt het wat traag denk ik.

30Drie Web Design & IT Consultancy | Raven Consultancy Services


Verwijderd

Topicstarter
Als ik hem Dispose krijg ik het gevoel dat ik de picturebox weggooi? Hij verdwijnt, en ik krijg er helaas geen afbeeldingen meer in geladen.

offtopic:
Verder had ik nog een kleine aftakking van dit topic: Hoe random is RND()?? Dit zijn telkens mijn eerste vier getallen, ongeacht waar ik RND() aanroep: 7056, 5335, 5796 en 2896 8)7

  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

De Bitmap moet je Disposen, niet de Picturebox.
Je declareert een Bitmap (als private ofzo) en daar doe je dat plaatje in. Als je een nieuw plaatje wilt laden, Dispose je de Bitmap en laad je een nieuwe; en die koppel je dan weer aan de Picturebox.

Voor random misschien de System.Random class gebruiken? Denk dat die meer gemaakt is voor .NET. Rnd komt uit Microsoft.Visualbasic volgens mij.

[ Voor 23% gewijzigd door MrSleeves op 07-02-2006 10:05 ]

30Drie Web Design & IT Consultancy | Raven Consultancy Services


  • whoami
  • Registratie: December 2000
  • Laatst online: 01:05
Verwijderd schreef op dinsdag 07 februari 2006 @ 10:00:
Als ik hem Dispose krijg ik het gevoel dat ik de picturebox weggooi? Hij verdwijnt, en ik krijg er helaas geen afbeeldingen meer in geladen.

offtopic:
Verder had ik nog een kleine aftakking van dit topic: Hoe random is RND()?? Dit zijn telkens mijn eerste vier getallen, ongeacht waar ik RND() aanroep: 7056, 5335, 5796 en 2896 8)7
Je moet je randomizer eerst seeden.
En als je het over RND() hebt, dan gebruik je niet echt de .NET manier (al is RND wel een wrapper errond).
Het is beter dat je direct gebruik maakt van de Random class.
Rnd komt uit Microsoft.Visualbasic volgens mij.
Komt idd uit Microsoft.Visualbasic, maar Rnd() zal gewoon wrappen rond de .NET Random class denk ik.

[ Voor 12% gewijzigd door whoami op 07-02-2006 10:08 ]

https://fgheysels.github.io/

Pagina: 1