[ERLEDIGT]QR Code in Text umwandeln?

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Soner
Beiträge: 492
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

[ERLEDIGT]QR Code in Text umwandeln?

Beitrag von Soner »

Kennt jemand fertige Funktion oder Bibliothek, mit dem man ein Bild mit QR Code wieder in Text umwandeln kann?
Zuletzt geändert von Soner am Mo 13. Dez 2021, 23:29, insgesamt 1-mal geändert.

sstvmaster
Beiträge: 506
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.0
CPU-Target: 32+64bit
Wohnort: Dresden

Re: QR Code in Text umwandeln?

Beitrag von sstvmaster »

Eventuell das hier: https://github.com/LongDirtyAnimAlf/ZXing.Delphi

und da speziell das: https://github.com/LongDirtyAnimAlf/ZXi ... .0/Lazarus

Oder das: http://lacak.users.sourceforge.net/freepascal.html -> "quirc - QR decoder library", als Download in Pascal
Windows 10, Lazarus 2.2.0 + Lazarus Trunk (main)
LG Maik

Soner
Beiträge: 492
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: QR Code in Text umwandeln?

Beitrag von Soner »

Vielen Dank. Ich gucke mir sie an.

Edit: Lacak's quirc ist gut.

Benutzeravatar
theo
Beiträge: 8997
Registriert: Mo 11. Sep 2006, 19:01

Re: QR Code in Text umwandeln?

Beitrag von theo »

Soner hat geschrieben:
Mo 13. Dez 2021, 23:22
Edit: Lacak's quirc ist gut.
Funzt. Benötigt aber auf Linux eine kleine Anpassung bei der Demo:

Code: Alles auswählen

uses ... IntfGraphics;

  procedure BitmapToQuircImage(dst: pbyte);
    var
      y, x: integer;
      c4: DWord;
      src: pbyte;
      SrcIntfImg: TLazIntfImage;
      BytePerPixel: Byte;
    begin
      SrcIntfImg := TLazIntfImage.Create(0, 0);
      try
        SrcIntfImg.LoadFromBitmap(Image1.Picture.Bitmap.Handle,
          Image1.Picture.Bitmap.MaskHandle);
        BytePerPixel := SrcIntfImg.DataDescription.BitsPerPixel div 8;
        for y := 0 to SrcIntfImg.Height - 1 do
        begin
          src := SrcIntfImg.GetDataLineStart(y);
          for x := 0 to SrcIntfImg.Width - 1 do
          begin
            c4 := PDWord(src)^ and $FFFFFF;
            // 77(R) + 151(G) + 28(B) = 256
            dst^ := ((c4 shr 16) * 77 + ((c4 shr 8) and $FF) * 151 + (c4 and $FF) * 28) shr 8;
            Inc(src, BytePerPixel);
            Inc(dst);
          end;
        end;
      finally
        SrcIntfImg.Free;
      end;
    end;   

Antworten