Einzelnen Beitrag anzeigen

nakaramia

Registriert seit: 1. Mär 2013
25 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: QR-Code aus Bild lesen

  Alt 21. Sep 2015, 12:26
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;
  Mit Zitat antworten Zitat