Toon posts:

[VB] waarde per pixel uit Bitmap

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben al een tijdje op zoek naar een manier om een monochroom BMP-bestand in te lezen met VB.

Het inlezen op zicht is natuurlijk niet moeilijk, maar ik moet aan de waarde van IEDERE pixel zien te komen. Dus als een pixel zwart is krijg ik bijvoorbeeld een 1 en anders een 0.

iemand enig idee hoe ik hieraan begin ?
of is er toevallig iemand die hier wat code voor geeft staan ?

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op de Programmer's File Format Collection kun je een hoop specificaties van bestanden (ook BMP) vinden:

http://www.wotsit.org/search.asp?s=graphics

Verwijderd

Topicstarter
zal dat eens doorlezen, maar ziet er niet gemakkelijk uit :s

niemand toevallig een VB voorbeeld ofzo ?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 21:40

mulder

ik spuug op het trottoir

Kun je dat BMP-je niet in een picturebox laden en dan met point(x,y) (?) de value op halen. Weet niet wat de werkelijke functie eigenlijk is

oogjes open, snaveltjes dicht


Verwijderd

Op donderdag 28 februari 2002 14:08 schreef Don Facundo het volgende:
Kun je dat BMP-je niet in een picturebox laden en dan met point(x,y) (?) de value op halen. Weet niet wat de werkelijke functie eigenlijk is
klopt, en je kan met PSet(x,y) dan weer een nieuwe waarde wegschrijven. Het nadeel van deze functies is dat ze _ERG_ traag zijn, vooral bij grote plaatjes.... dan kan je beter API calls gebruiken.

Voor jou specifieke probleem zijn vast wel standaard oplossingen te vinden, kijk maar eens op www.pscode.com (zie ook sig.) :)

Verwijderd

Topicstarter
Op donderdag 28 februari 2002 14:17 schreef KoenM het volgende:

[..]

klopt, en je kan met PSet(x,y) dan weer een nieuwe waarde wegschrijven. Het nadeel van deze functies is dat ze _ERG_ traag zijn, vooral bij grote plaatjes.... dan kan je beter API calls gebruiken.

Voor jou specifieke probleem zijn vast wel standaard oplossingen te vinden, kijk maar eens op www.pscode.com (zie ook sig.) :)
ik had al gezocht op pscode, voor ik de vraag stelde, maar ik heb nergens een code kunnen vinden waar ik echt per pixel de waarde mee kon krijgen
zal maar nog eens goed zoeken, want een beetje snelheid is altijd handig

Verwijderd

Topicstarter
mijn eerst poging om een pixel te lezen
code:
1
2
3
Private Sub LeesValue_Click()
    waarde = GetPixel(pic.hDC, 1, 1)
End Sub

ik gebruik hiervoor een API omdat het veel sneller zou moeten gaan dan met de functies die in VB zitten

waarden die ik terug krijg begrijp ik totaal niet (niet met API en niet met VB functies)

getallen als 13880785, 0, en nog iets van 16**0225
ik lees enkel monochrome BMP files in dat ik in paint maak ...

iemand een idee wat ik mis doe, of hoe ik de getallen met interpreteren ?

Verwijderd

Je autoredraw van je pic control staat toch aan?

  • Adion
  • Registratie: Januari 2001
  • Laatst online: 05-09 08:09
Zorg inderdaad dat autoredraw opstaat.
De waarde die je terugkrijgt is de 24-bit voorstelling van de pixel.
Je kan deze gewoon vergelijken met de constanten vbWhite en vbBlack.
(Dus if mypixel = vbBlack then blabla)
Als je toch nog andere waarden dan deze 2 krijgt, is dat waarschijnlijk omdat je ook een deel van de border inleest.
Zet de border op flat/2d of zoiets en dat probleem zou ook opgelost moeten zijn.
Hoewel GetPixel iets sneller is dan Point is het nog steeds tamelijk traag.
Het gaat al iets sneller als je voor een lus eerst de handle (hdc) in een variabele steekt, dit maakt het nog iets sneller.
Voorbeeldje:
Dim hdc as Long
hdc = picture1.hdc
for a = 0 to 100
pixel = GetPixel(hdc,1,1)
next

Ideaal is natuurlijk zelf de bitmap in te lezen. Dan moet je dus ook de header kunnen lezen, en monochrone bitmaps zijn opgeslagen in een formaat van 1 bit/pixel, dus moet je een gelezen byte opsplitsen in bits. Niet zo eenvoudig dus, maar wel sneller.

VirtualDJ 2026 - Fast Image Resizer - Instagram


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 22:47

Sponge

Serious Game Developer

Check getdibbits, bijv op vbapi.com
Pagina: 1