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.