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
Bug: GrabImage mit 1Bit BMP's
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
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.
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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Ich habe jetzt getestet:
GrabImage() macht zwar ebenfalls nur ein "ein Bit Image", aber die Farben werden nicht richtig übertragen.
Ergebnis für eine 1-Bit Bitmap:
Also ein Bug beim kopieren der Header-Informationen von der Source- zur Destination-Bitmap.
Volker
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
Code: Alles auswählen
Farbe oben links 1: 16777215 ; (FFFFFF)
Tiefe: 1
Farbe oben links 2: 10813202 ; (A4FF12)
Tiefe: 1
Volker