Seite 2 von 2

Verfasst: 12.03.2007 20:32
von Kukulkan
Hallo,

Das ganze arbeitet in zwei Schritten: Zuerst suche ich im Schnellverfahren die Barcodes in der gesamten Bitmap. Diese lade ich übrigens normal per LoadImage() ein -> sollte auch nur den Speicher für eine ein Bit Bitmap verbrauchen. Dann habe ich die Koordinaten.
Im zweiten Teil habe ich eine Subroutine die in einem isolierten Bild eines Barcodes den Code selbst ausliest. Ich muss also die gefundenen Barcodes jeweils als Einzelbild (Ausschnitt) übergeben. Das ist auch eine alternative Funktion meiner Library.
Wenn ich die Bitmap mit GrabImage() kopiere, dann ging ich davon aus, dass die Ziel-Bitmap auch nur ein Bit hat. Da GrabImage() keinen Depth-Parameter hat sollte es das auch tun. Leider macht GrabImage() aber die Farben kaputt und liefert mir dann statt weiss einfach Grün oder Cyan. Das ist definitiv ein Bug.

Volker

Verfasst: 12.03.2007 21:24
von Kaeru Gaman
achso.. also das ziel-image hat auch 1-bit-tiefe, aber die farben sind falsch?
das liegt aber nicht an der übertragung des musters, das muss am header liegen.
wenn eine farbzuordnung irgendwo festgelegt ist, dann im header.
oder wird fehlerhafter weise eine tiefere bitmap erzeugt...?

auf jeden fall würde ich eine monochrome bitmap zur weiterverarbeitung vorziehen.
und darauf zugreifen würde ich dann keinesfalls mit Point(),
sondern mit systemseitigen zugriffsbefehlen.

Verfasst: 13.03.2007 08:36
von Kukulkan
Ich habe jetzt getestet:

GrabImage() macht zwar ebenfalls nur ein "ein Bit Image", aber die Farben werden nicht richtig übertragen.

Code: Alles auswählen

#Source = 1 
#Dest = 2 

#FileSource = "c:\testbild.bmp" 
#FileDest = "c:\testbild_neu.bmp" 

LoadImage(#Source, #FileSource) 

StartDrawing(ImageOutput(#Source)) 
Debug "Farbe oben links 1: " + Str(Point(1,1))
Debug "Tiefe: " + Str(ImageDepth(#Source))
StopDrawing() 

GrabImage(#Source, #Dest, 0, 0, ImageWidth(1), ImageHeight(1)) 

StartDrawing(ImageOutput(#Dest)) 
Debug "Farbe oben links 2: " + Str(Point(1,1))
Debug "Tiefe: " + Str(ImageDepth(#Dest))
StopDrawing() 

SaveImage(#Dest, #FileDest, #PB_ImagePlugin_BMP) 

End
Ergebnis für eine 1-Bit Bitmap:

Code: Alles auswählen

Farbe oben links 1: 16777215 ; (FFFFFF)
Tiefe: 1
Farbe oben links 2: 10813202 ; (A4FF12)
Tiefe: 1
Also ein Bug beim kopieren der Header-Informationen von der Source- zur Destination-Bitmap.

Volker