![]() |
QR Code Komponente
Hallo,
wir haben vor kurzem für die Österreicher die tolle RKSV Kassensignierung programmiert und uns auf die DLL von A-Trust gestützt. Diese generiert allerdings einen ziemlich bescheiden einzustellenden QR Code und dazu imo auch einen viel zu feinen QR Code. Sprich ich kann zwar bei der Generierung des QR Codes einen Skalierungsfaktor mitgeben, aber der ist INT und damit ist Ding zu groß oder zu klein zum scannen. Aktuell habe ich eine Kantenlänge von 4cm und das ist imo zu groß. Der nächste kleine Skalierungsfaktor gibt mir dann aber 2cm Kantenlänge raus. 3cm wäre mir lieber. Wir erhalten die QR Code als BITMAP und wenn ich diesen skaliere und auf einen 150DPI Belegdrucker drucke, dann ist dieser fast nicht mehr lesbar. Man brauch schon eine sehr gute Kamera und Software und viel Geduld. D.h ich würde mich gern selber darum kümmern. ei normalen Strichcodes ist das ja noch relativ simpel. aber bei QR Code bräuchte ich dafür wohl eine verlässliche Komponente. Oder eine sauberere Skalierung der Bitmap. Aber wie gesagt. ich habe den QR Code von A-Trust mit anderen verglichen und dieser ist viel feiner. ES wirkt als wären mehr Informationen darin enthalten. |
AW: QR Code Komponente
Also vielleicht habe ich zu wenig Praxiserfahrung mit Reports oder ich verstehe das Problem nicht, aber eine Bitmap ist eine Pixeltapete. Was du in Zentimetern draus machst bleibt dir überlassen. Wie skalierst du denn? Die Delphi-Standard-Skalierung über
Delphi-Quellcode:
oder so ist, meine ich, ein potthässliches Next-Neighbour, das ist für Informationsgrafiken wie Strich- oder QR-Codes natürlich der Tod.
TImage
|
AW: QR Code Komponente
QRCode erzeugen ist in ca. 1000 LOC zu machen....
Aber ein Punkt ist nun mal ein Punkt... Halbe Punkte kann kein Drucker drucken, also reicht ein Integer-Multiplikator... Wenn Dein QRCode also 60 Pixel breit ist, ist die nächste mögliche Größe eben 120, 180... usw... Damit solltest Du bei 150DPI also auf 2.41 cm hinkommen... |
AW: QR Code Komponente
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).
|
AW: QR Code Komponente
Liste der Anhänge anzeigen (Anzahl: 1)
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; Zitat:
Edit: Der Drucker hat 180 nicht 150dpi. |
AW: QR Code Komponente
Schau mal hier im Forum:
![]() oder hier: ![]() HTH! |
AW: QR Code Komponente
Zitat:
bei 180 DPI sollte ein Bild mit 160 Pixeln 2,28 cm groß sein... 2,54(cm) * 160(Pixel) / 180(DPI) = 2,28cm |
AW: QR Code Komponente
Lass dir doch einfach nur den Signaturstring* geben und nehme eine beliebige QR-Code Komponente und füttere sie damit. Klappt wunderbar.
Bspw. diese hier: ![]() *also der jetzt hier: _R1-AT0_DEMO-CASH-BOX524_366596_2015-12-17T11:23:44_0,00_0,00_3,64_-2,60_1,79_VFJB_47be737cb1f6d1f1_ZvNxJw6a1A4= _J7YC28zquHfHzMpx02TqElbXOTSgXQu5JAA9Xu1Xzzu5p8eUY T+sgmyhzRps5nYyEp5Yh8ATIa9130zmuiACHw== |
AW: QR Code Komponente
Zitat:
Ich versuche gerade mein Glück mit der ZXing QRCode |
AW: QR Code Komponente
Mit der ZXing funktioniert das 1a. Kleine handliche Unit zum generieren von 2D QR Codes.
Damit sieht das Ding auch so aus wie ich es gern hätte und konnte es damit verkleinern. Was die GMPrintSuite genau berechnet habe ich nun nicht ganz raus bekommen. Bei einer 175 Pixel Bitmap kommt er auf 1,83inch. Das mal 25,4 = 46,48mm. Übrigens auf jeder DPI Anzahl gleich. Ich war gerade aber zu faul das ganze zu debuggen und habe die QR Bitmap so verkleinert das ich auf 3cm komme. Aber ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz