AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

QR Code Komponente

Ein Thema von stalkingwolf · begonnen am 31. Mai 2017 · letzter Beitrag vom 31. Mai 2017
Antwort Antwort
stalkingwolf

Registriert seit: 6. Mai 2011
540 Beiträge
 
#1

QR Code Komponente

  Alt 31. Mai 2017, 09:32
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.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.158 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: QR Code Komponente

  Alt 31. Mai 2017, 09:38
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 TImage oder so ist, meine ich, ein potthässliches Next-Neighbour, das ist für Informationsgrafiken wie Strich- oder QR-Codes natürlich der Tod.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik
Online

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: QR Code Komponente

  Alt 31. Mai 2017, 10:06
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...
  Mit Zitat antworten Zitat
SebastianZ

Registriert seit: 23. Jul 2009
89 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: QR Code Komponente

  Alt 31. Mai 2017, 10:16
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).
  Mit Zitat antworten Zitat
stalkingwolf

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

AW: QR Code Komponente

  Alt 31. Mai 2017, 10: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 10:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von bytecook
bytecook

Registriert seit: 6. Aug 2010
Ort: Dornbirn
151 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: QR Code Komponente

  Alt 31. Mai 2017, 13:09
Schau mal hier im Forum:

http://www.delphipraxis.net/143986-%...i-zint-13.html

oder hier:

http://www.consert.net/shop/?page=sh...d=2d-bardcodes

HTH!
Peter
Was mache ich, wenn ein Bär meine Frau angreift?
Nichts. Er hat sie angegriffen, soll er doch selber sehen, wie er sich verteidigt.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik
Online

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: QR Code Komponente

  Alt 31. Mai 2017, 14:44
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.
NEIN...

bei 180 DPI sollte ein Bild mit 160 Pixeln 2,28 cm groß sein...

2,54(cm) * 160(Pixel) / 180(DPI) = 2,28cm
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: QR Code Komponente

  Alt 31. Mai 2017, 14:45
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: http://www.delphipraxis.net/173262-q...qrbarcode.html


*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==
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
540 Beiträge
 
#9

AW: QR Code Komponente

  Alt 31. Mai 2017, 15:14
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.
NEIN...

bei 180 DPI sollte ein Bild mit 160 Pixeln 2,28 cm groß sein...

2,54(cm) * 160(Pixel) / 180(DPI) = 2,28cm
unsere GMPrintSuite druckt das auf 4cm siehe Bild. Skalierung in der Funktion deaktiviert. Ich lege nun aber nicht meine Hand ins Feuer ob das korrekt ist was das Ding macht.

Ich versuche gerade mein Glück mit der ZXing QRCode
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
540 Beiträge
 
#10

AW: QR Code Komponente

  Alt 31. Mai 2017, 17:42
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 http://www.unitconversion.org/typogr...onversion.html kommt man auf das gleiche.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz