Einzelnen Beitrag anzeigen

stalkingwolf

Registriert seit: 6. Mai 2011
518 Beiträge
 
#5

AW: QR Code Komponente

  Alt 31. Mai 2017, 09:48
Nun ja die A-Trust DLL gibt bei Skalierungsfaktor 1 ein 80x80 Pixel Bitmap aus.
Bei Faktor 2 = 160
Bei Faktor 3 = 240 usw.
160 Pixel ergeben ausgedruckt 4cm.

Anbei einmal ein Foto von dem was ich drucke.
Unten rechts ist der 1 zu 1 Druck des QR Codes von 160Pixel generiert von der A-Trust DLL.
Darüber mein skalierter. Der ist nicht mehr lesbar.
Links ist ein QR Code von einem Gasthaus Zettel. Man erkennt den Unterschied direkt zu dem aus der A-Trust DLL.
Das meine ich mit "feiner" und "mehr Informationen". Es sind natürlich nicht mehr Informationen.

skaliert habe ich mit
Code:
procedure ResizeBitmap(var Bitmap: TBitmap; Width, Height: Integer);
var
  R: TRect;
  B: TBitmap;
  X, Y: Integer;
begin
  if assigned(Bitmap) then begin
    B:= TBitmap.Create;
    try
      if Bitmap.Width > Bitmap.Height then begin
        R.Right:= Width;
        R.Bottom:= ((Width * Bitmap.Height) div Bitmap.Width);
        X:= 0;
        Y:= (Height div 2) - (R.Bottom div 2);
      end else begin
        R.Right:= ((Height * Bitmap.Width) div Bitmap.Height);
        R.Bottom:= Height;
        X:= (Width div 2) - (R.Right div 2);
        Y:= 0;
      end;
      R.Left:= 0;
      R.Top:= 0;
      B.PixelFormat:= Bitmap.PixelFormat;
      B.Width:= Width;
      B.Height:= Height;
      B.Canvas.Brush.Color:= clwhite;
      B.Canvas.FillRect(B.Canvas.ClipRect);
      B.Canvas.StretchDraw(R, Bitmap);
      Bitmap.Width:= Width;
      Bitmap.Height:= Height;
      Bitmap.Canvas.Brush.Color:= clwhite;
      Bitmap.Canvas.FillRect(Bitmap.Canvas.ClipRect);
      Bitmap.Canvas.Draw(X, Y, B);
    finally
      B.Free;
    end;
  end;
end;
Je nachdem wie du den Beleg druckst, kann dir das Erzeugen des QR-Codes das mitunter auch dein Reporting-System oder der Bon-Drucker übernehmen (es gibt zB ESC/POS Befehle zum Drucken von QR-Codes).
Wir drucken seler über die GMPrintSuite. Über den Drucker selber wäre das Problem das ich dann ein Druckcontext von Windows habe und darein meinen QR bräuchte. Das könnte ich dann nur NACH dem Beleg drucken und wäre damit auch nicht in unseren Belegarchiv mit abgespeichert.

Edit: Der Drucker hat 180 nicht 150dpi.
Miniaturansicht angehängter Grafiken
qrcode.jpg  

Geändert von stalkingwolf (31. Mai 2017 um 09:54 Uhr)
  Mit Zitat antworten Zitat