Cevap için teşekkürler kodlar aşağıda, barkodu okuyor mesaj olarak gösteriyor.Devamında image içindeki görüntü akışı ağırlaşıyor.Kodlar standart örnekteki kodlar.
procedure TMainForm.CameraComponent1SampleBufferReady(Sender: TObject; const ATime: TMediaTime);
begin
TThread.Synchronize(TThread.CurrentThread,
procedure
begin
CameraComponent1.SampleBufferToBitmap(imgCamera.Bitmap, True);
if (fScanInProgress) then
begin
exit;
end;
{ This code will take every 4 frame. }
inc(fFrameTake);
if (fFrameTake mod 4 <> 0) then
begin
exit;
end;
if Assigned(fScanBitmap) then
FreeAndNil(fScanBitmap);
fScanBitmap := TBitmap.Create();
fScanBitmap.Assign(imgCamera.Bitmap);
ParseImage();
end);
end;
procedure TMainForm.ParseImage();
begin
TThread.CreateAnonymousThread(
procedure
var
ReadResult: TReadResult;
ScanManager: TScanManager;
begin
try
fScanInProgress := True;
ScanManager := TScanManager.Create(TBarcodeFormat.EAN_13, nil); // ean13 seçtik
try
ReadResult := ScanManager.Scan(fScanBitmap);
except
on E: Exception do
begin
TThread.Synchronize(TThread.CurrentThread,
procedure
begin
lblScanStatus.Text := E.Message;
end);
exit;
end;
end;
TThread.Synchronize(TThread.CurrentThread,
procedure
begin
if (Length(lblScanStatus.Text) > 10) then
begin
lblScanStatus.Text := '-';
end;
lblScanStatus.Text := lblScanStatus.Text + '-';
if (ReadResult <> nil) then
begin
if buldum =0 then
begin
ShowMessage(ReadResult.Text);
end;
end;
end);
finally
if ReadResult <> nil then
FreeAndNil(ReadResult);
ScanManager.Free;
fScanInProgress := false;
end;
end).Start();
end;

