QR-Code mit Purebasic auslesen , wie geht das ?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
funkheld
Beiträge: 649
Registriert: 31.12.2009 11:58

QR-Code mit Purebasic auslesen , wie geht das ?

Beitrag von funkheld »

Hallo, guten Tag.
Wie kann man den QR-Code mit Purebasic auslesen oder auch Qr-Code erstellen ?

Danke.

Gruss
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: QR-Code mit Purebasic auslesen , wie geht das ?

Beitrag von RSBasic »

Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
funkheld
Beiträge: 649
Registriert: 31.12.2009 11:58

Re: QR-Code mit Purebasic auslesen , wie geht das ?

Beitrag von funkheld »

Hallo, jup danke.
Funktioniert gut.

Bloss die abgespeicherte JPG wird vom Irfanwiev angemeckert, das es eine BMP-Datei ist und keine JPG.
Was muss hier geändert werden :

Code: Alles auswählen

EnableExplicit

Define File.s
Define event.i
Define ImgID.i

Structure QRCode
  Version.l
  Width.l
  pSymbolData.l
EndStructure

Enumeration
  #QR_ECLEVEL_L = 0 
  #QR_ECLEVEL_M
  #QR_ECLEVEL_Q
  #QR_ECLEVEL_H     
EndEnumeration

UseJPEGImageEncoder()

ImportC "qrcodelib.lib"
  QRcode_encodeString8bit(Text.p-utf8, Version.l, QRecLevel.i) As "_QRcode_encodeString8bit"
  QRcode_free(*Qrcode.QRCode) As "_QRcode_free"
EndImport

Procedure CreateQRCode (content.s, ImgID = #PB_Any, EC_Level = #QR_ECLEVEL_L, Size=4 )
  Protected *Qrcode.QRCode, QRImg, *mem, w, y, x, b
 
  *Qrcode = QRcode_encodeString8bit(content, 0, EC_Level)
 
  With *Qrcode
    If *Qrcode = 0 Or \Width = 0
      ProcedureReturn #Null
    Else
      *mem = \pSymbolData
      w    = \Width
    EndIf
  EndWith
 
  QRImg  = CreateImage(ImgID, w, w)
 
  If QRImg
    If ImgID = #PB_Any
      ImgID = QRImg
    EndIf
  EndIf
 
  If StartDrawing(ImageOutput(ImgID))
      ; White Background
      Box (0, 0, ImageWidth(ImgID), ImageHeight(ImgID), #White)
     
      ; Draw Black Dots
      For y = 0 To w - 1
        For x = 0 To w - 1
          b = PeekB(*mem) & $FF
          If b & 1
            Plot( x, y, #Black)
          EndIf
          *mem + 1
        Next
      Next   
    StopDrawing()
   
    w * Size
    ResizeImage( ImgID, w, w, #PB_Image_Raw)
  EndIf
 
  QRcode_free(*Qrcode)
 
ProcedureReturn ImgID
EndProcedure

; Example, how to use it:
CreateImage(0, 200, 200)

OpenWindow(#Null, 0, 0, 850, 500, "2D Barcode Creator", #WS_OVERLAPPEDWINDOW|#PB_Window_ScreenCentered )
;TextGadget(#PB_Any, 10, 4, 50, 16, "Text" )
EditorGadget(0, 400, 50, 400, 350)

TextGadget(#PB_Any, 10, 44, 50, 16, "EC_Level" )
TrackBarGadget(1, 10, 60, 100, 20, #QR_ECLEVEL_L, #QR_ECLEVEL_H, #PB_TrackBar_Ticks)

TextGadget(#PB_Any, 110, 44, 50, 16, "Size" )
TrackBarGadget(2, 110, 60, 100, 20, 1, 10, #PB_TrackBar_Ticks)

ImageGadget (3, 10, 90, 430, 550, ImageID(0), #PB_Image_Border)

ButtonGadget(4,5,5,50,20,"Save")
AddGadgetItem(0, 0, "")

Repeat
 
  Event = WaitWindowEvent()
 
  If Event = #PB_Event_Gadget
    Select EventGadget()
      Case 0, 1, 2
        ImgID = CreateQRCode(GetGadgetText(0), #Null, GetGadgetState(1), GetGadgetState(2))
        If IsImage(ImgID)
          SetGadgetState(3, ImageID(ImgID))
        EndIf
      Case 4
        File=SaveFileRequester("QR-Code als JPG speichern","QR-Image","jpg (*.jpg)",1)
        SaveImage(0,File+".jpg")
    EndSelect
  EndIf

Until Event = #PB_Event_CloseWindow
Danke.
Gruss
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: QR-Code mit Purebasic auslesen , wie geht das ?

Beitrag von Kiffi »

Cursor auf SaveImage stellen und F1 drücken.
a²+b²=mc²
Antworten