Hallo,
ich habe mit dem Code aus o.g. Thread jetzt mal versucht, Strichcode einzulesen, funktioniert ebenfalls nicht.
dll habe ich getauscht, ohne Ergebnis. Ich bekomme einfach weder Fehler noch Fund.
Vielleicht fällt jemandem am Code etwas auf.
Delphi-Quellcode:
begin
bmp := TBitmap.Create;
bmp.LoadFromFile(filename);
SetGrayscale(bmp);
scanner := GetScanner;
image := GetImage(bmp);
count := 0;
count := zbar_scan_image(scanner, image); //<-- count ist immer 0
end;
function TQRCodeReader.GetScanner: zbar_image_scanner_t;
var
stat : Integer;
begin
//Scanner initiieren
Result := zbar_image_scanner_create;
stat := zbar_image_scanner_set_config(Result, ZBAR_QRCODE, ZBAR_CFG_ENABLE, 1);
if stat <> 0 then
GetErrorMessage('Image-Scanner: ', stat);
end;
function TQRCodeReader.GetImage(bmp: TBitmap): zbar_image_t;
//Scannerlesbares Bild erzeugen
var
blubb : PByte;
begin
blubb := bmp.ScanLine[bmp.height-1];
Result := zbar_image_create;
zbar_image_set_format(Result, 'Y800');
zbar_image_set_size(Result, bmp.width, bmp.height);
zbar_image_set_data(Result, blubb, bmp.height*bmp.width, nil);
end;
procedure TQRCodeReader.SetGrayscale(bmp: TBitmap);
var
x, y : integer;
p : ^TPixArray;
gray : byte;
begin
for y := 0 to bmp.Height - 1 do
begin
p := bmp.ScanLine[y];
for x := 0 to bmp.Width - 1 do
begin
gray := round(p^[1]*0.3 + p^[2]*0.59 + p^[3]*0.11);
p^[1] := gray;
p^[2] := gray;
p^[3] := gray;
inc(p);
end;
end;
end;