• Offizieller Beitrag

    Hi,
    im EN-Forum habe ich einen schönen Beitrag zum Erstellen von QR-Code gefunden.
    Das Bsp. war mir nur viel zu aufgebläht und nicht zur direkten Texteingabe vorgesehen.
    Somit habe ich eine GUI dafür erstellt mit folgenden Optionen:

    - Auswahl: Kopiere in Zwischenablage
    - Auswahl: Speichere Code als BMP und/oder PNG (oder gar nicht)
    - Auswahl: Dateiname, Präfix ist immer "QR_", Vorgabe: "JJJJMMTT_hhmmss"
    - Auswahl: Speicherordner, Vorgabe: Skriptordner
    - Texteingabe im Edit, verbleibende Zeichenzahl wird angezeigt (max. 3049 Zeichen; normalerweise erlaubt QR bis 4296 Zeichen, die verwendete Dll hat hier jedoch limitiert - vermutlich Qualitätslevel)
    - bei Restzeichenzahl unter 11 wird das Zählereld gelb hinterlegt, beim Überschreiten der zulässigen Anzahl erfolgt Rotfärbung
    - Bei Erstellen des QR-Codes wird die GUI auf die jeweils erforderliche Größe angepasst

    So schauts aus:
    autoit.de/wcf/attachment/16727/

    Die notwendige Dll habe ich als Binärstring gleich in die au3 mit eingebaut. Sie wird temporär erstellt im Skriptordner und beim Beenden wieder gelöscht.
    Hier im Thread-Code habe ich den Binärstring gekürzt.

    Edit 21.12.2012:
    Ich glaube der Fehler ist gefunden: #AutoIt3Wrapper_UseX64=N ist erforderlich. Gleich noch einen kleinen Fehler gefixed: Es wurde immer im @ScriptDir gespeichert (hatte vergessen die Variable dafür zu setzen ;)).

    QR_Creator.au3
    [autoit]


    #AutoIt3Wrapper_UseX64=N

    [/autoit] [autoit][/autoit] [autoit]

    #include <Constants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    #include <EditConstants.au3>
    #include <GDIPlus.au3>
    #include <Clipboard.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('GuiOnEventMode', 1)
    OnAutoItExitRegister("_DelBinaryTempFiles")

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $__QR_MAX_LEN = 3049 ; == may be that in your system another, low value is possible

    [/autoit] [autoit][/autoit] [autoit]

    Global $sDllQR = @ScriptDir & "\quricol32.dll"
    _CreateDll()

    [/autoit] [autoit][/autoit] [autoit]

    Func _CreateDll()
    Local $bData
    ; String mit den Binärdaten von: quricol32.dll
    $bData &= "0x4D5A90000300000004000000FFFF0000B8000000000000004000000000000000000000000000000000000000000000000000000000000000000...." ; gekürzt
    $bData &= "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    Local $hFileOut = FileOpen($sDllQR, 2+8+16)
    FileWrite($hFileOut, Binary($bData))
    FileClose($hFileOut)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _DelBinaryTempFiles()
    FileDelete($sDllQR)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Global $hWnd, $cbClip, $cbBMP, $cbPNG, $cbName, $lbName, $inName, $inPath, $btPath, $editQR, $btRun, $btDel
    Global $iState, $fClip = False, $fBMP = False, $fPNG = True, $sFile, $iH

    [/autoit] [autoit][/autoit] [autoit]

    $hWnd = GUICreate("QR Creator", 500, 395)
    $a = WinGetPos($hWnd)
    $iH = $a[3]
    GUICtrlCreateGroup(' Optionen ', 10, 10, 480, 120)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $cbClip = GUICtrlCreateCheckbox(' Kopie in Zwischenablage', 30, 35, 150, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUICtrlCreateLabel('Speichern als:', 260, 38, 80, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $cbBMP = GUICtrlCreateCheckbox(' *.BMP', 350, 35, 50, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $cbPNG = GUICtrlCreateCheckbox(' *.PNG', 420, 35, 50, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $cbName = GUICtrlCreateCheckbox(' Name Datei', 30, 65, 80, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $lbName = GUICtrlCreateLabel('QR_', 120, 66, 30, 18, BitOR(0x0002, 0x0200)) ; SS_RIGHT,SS_CENTER
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUICtrlSetBkColor(-1, 0xFEFEFE)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $inName = GUICtrlCreateInput('JJJJMMDD_hhmmss', 152, 65, 318, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUICtrlSetBkColor(-1, 0xFEFEFE)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateLabel('Ordner', 50, 98, 60, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $inPath = GUICtrlCreateInput('', 120, 95, 325, 20, $ES_READONLY)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUICtrlSetBkColor(-1, 0xFEFEFE)
    GUICtrlSetData(-1, @ScriptDir)
    $btPath = GUICtrlCreateButton('...', 450, 95, 20, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateLabel('Zu codierender Text', 10, 143, 120, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUICtrlCreateLabel('Eingabelänge [ max. ' & $__QR_MAX_LEN & ' Zeichen ]:', 240, 143, 185, 17)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $inCounter = GUICtrlCreateInput($__QR_MAX_LEN, 430, 140, 40, 20, BitOR($ES_READONLY, $ES_CENTER))
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUICtrlSetBkColor(-1, 0xFEFEFE)
    $editQR = GUICtrlCreateEdit('', 10, 165, 480, 150, BitOR($ES_WANTRETURN, $ES_MULTILINE, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $btRun = GUICtrlCreateButton('Start', 420, 325, 70, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    $btDel = GUICtrlCreateButton('Löschen', 420, 365, 70, 20)
    GUICtrlSetResizing(-1, $GUI_DOCKALL)
    GUISetOnEvent(-3, '_exit')
    GUICtrlSetOnEvent($cbClip, '_event')
    GUICtrlSetOnEvent($cbBMP, '_event')
    GUICtrlSetOnEvent($cbPNG, '_event')
    GUICtrlSetOnEvent($cbName, '_event')
    GUICtrlSetOnEvent($btPath, '_event')
    GUICtrlSetOnEvent($btRun, '_event')
    GUICtrlSetOnEvent($btDel, '_event')

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While True
    Sleep(50)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _event()
    Switch @GUI_CtrlId
    Case $cbClip
    $fClip = Not $fClip
    Case $cbBMP
    $fBMP = Not $fBMP
    Case $cbPNG
    $fPNG = Not $fPNG
    Case $cbName
    Local $iState = $GUI_DISABLE
    If BitAND(GUICtrlRead($cbName), $GUI_CHECKED) Then
    $iState = $GUI_ENABLE
    If (Not $fBMP And Not $fPNG) Then
    GUICtrlSetState($cbName, $GUI_UNCHECKED)
    Return MsgBox(262160, 'Fehler', 'Bitte erst Dateityp zum Speichern auswählen!')
    EndIf
    EndIf
    GUICtrlSetState($lbName, $iState)
    GUICtrlSetState($inName, $iState)
    Case $btPath
    Local $sPath = FileSelectFolder('Speicherpfad für QR-Image wählen', '', 7)
    If $sPath = '' Then Return
    GUICtrlSetData($inPath, $sPath)
    Case $btRun
    $sFile = GUICtrlRead($inName)
    If $sFile = "JJJJMMDD_hhmmss" Then $sFile = -1
    Local $iFormat = 0
    If $fBMP Then $iFormat += 1
    If $fPNG Then $iFormat += 2
    Local $sContent = GUICtrlRead($editQR)
    If StringLen($sContent) > $__QR_MAX_LEN Then Return MsgBox(262160, 'Fehler', 'Der Inhalt überschreitet die maximal zulässige Anzahl an Zeichen!')
    _Reset()
    createQR($sContent, $fClip, $sFile, $iFormat)
    Case $btDel
    GUICtrlSetData($editQR, '')
    _Reset()
    _WinMove()
    EndSwitch
    If (Not $fBMP) And (Not $fPNG) Then
    GUICtrlSetState($btPath, $GUI_DISABLE)
    GUICtrlSetState($inPath, $GUI_DISABLE)
    Else
    GUICtrlSetState($btPath, $GUI_ENABLE)
    GUICtrlSetState($inPath, $GUI_ENABLE)
    EndIf
    EndFunc ;==>_event

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Reset()
    _WinAPI_RedrawWindow($hWnd)
    GUICtrlSetData($inCounter, $__QR_MAX_LEN)
    GUICtrlSetColor($inCounter, 0x000000)
    GUICtrlSetBkColor($inCounter, 0xFEFEFE)
    EndFunc ;==>_Reset

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $hWndEdit, $iCount, $iShow, $sFormat = '%04d'
    $hWndEdit = GUICtrlGetHandle($editQR)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $hWndFrom
    Case $hWndEdit
    Switch $iCode
    Case $EN_CHANGE
    $iCount = StringLen(GUICtrlRead($editQR))
    $iShow = $__QR_MAX_LEN - $iCount
    If $iShow < 0 Then
    $sFormat = '%+05d'
    GUICtrlSetColor($inCounter, 0xFFFFFF)
    GUICtrlSetBkColor($inCounter, 0xFF0000)
    ElseIf $iShow < 11 Then
    GUICtrlSetColor($inCounter, 0x000000)
    GUICtrlSetBkColor($inCounter, 0xFFFF00)
    Else
    GUICtrlSetColor($inCounter, 0x000000)
    GUICtrlSetBkColor($inCounter, 0xFEFEFE)
    EndIf
    GUICtrlSetData($inCounter, StringFormat($sFormat, $iShow))
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; =======================================================================================
    ; Title .........: QR Creator basierend auf Skript von Giovanni Rossati (El Condor) - http://www.autoitscript.com/forum/topic/14…de/#entry994116
    ; Description ...: Erstellen von QR-Code, wahlweise Speichern als bmp und/oder png, optional Speichern in Zwischenablage
    ; Parameters.....: $_sText zu codierender Text
    ; ......optional.: $_fClipboard Übergabe Image an Zwischenablage, Standard: "True"
    ; ......optional.: $_sImageName Dateiname, erhält autom. Präfix 'QR_', Standard: "-1" = "QR_JJJJMMDD_hhmmss"
    ; ......optional.: $_iFormat Speicheroption: 0=nicht Speichern, 1=BMP, 2=PNG (Standard), 3=BMP und PNG
    ; Author(s) .....: Giovanni Rossati (El Condor)
    ; ..modified.by..: BugFix
    ; =======================================================================================
    Func createQR($_sText, $_fClipboard = False, $_sImageName = -1, $_iFormat = 2)
    Local $return, $hBitmap, $hGraphic, $hBitmap2, $iWidth, $sPath = GUICtrlRead($inPath)
    If (Not FileExists($sPath)) And $_iFormat > 0 Then Return MsgBox(262160, 'Fehler', 'Speicherordner existiert nicht!')
    Local $iErr = 0, $hDll = DllOpen($sDllQR)
    If $_sImageName = -1 Then
    $_sImageName = '\QR_' & @YEAR & @MON & @MDAY & '_' & @HOUR & @MIN & @SEC
    Else
    $_sImageName = '\QR_' & $_sImageName
    EndIf
    If BitAND($_iFormat, 1) Then DllCall($hDll, "none", "GenerateBMP", "str", $sPath & $_sImageName & ".bmp", "str", $_sText, "int", 4, "int", 2)
    If BitAND($_iFormat, 2) Then DllCall($hDll, "none", "GeneratePNG", "str", $sPath & $_sImageName & ".png", "str", $_sText, "int", 4, "int", 2)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()
    $return = DllCall($hDll, "HANDLE", "GetHBitmap", "str", $_sText, "int", 4, "int", 2)
    $iErr = @error
    DllClose($hDll)
    If Not IsArray($return) Or $iErr <> 0 Then Return MsgBox(262160, 'Fehler', "Der Dll-Aufruf endete mit dem Fehler-Nr: " & $iErr & "!")
    $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($return[0])

    [/autoit] [autoit][/autoit] [autoit]

    $iWidth = _GDIPlus_ImageGetWidth($hBitmap)
    If $iWidth > 60 Then _WinMove($iWidth)

    [/autoit] [autoit][/autoit] [autoit]

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 10, 325)

    [/autoit] [autoit][/autoit] [autoit]

    If $_fClipboard Then
    If Not _ClipBoard_Open($hWnd) Then _WinAPI_ShowError("_ClipBoard_Open failed")
    If Not _ClipBoard_Empty() Then _WinAPI_ShowError("_ClipBoard_Empty failed")
    $hBitmap2 = _WinAPI_CopyImage(_GDIPlus_BitmapCreateHBITMAPFromBitmap($hBitmap), 0, 0, 0, $LR_COPYDELETEORG + $LR_COPYRETURNORG)
    _ClipBoard_SetDataEx($hBitmap2, $CF_BITMAP)
    _ClipBoard_Close()
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; Clean up resources
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_BitmapDispose($hBitmap)
    _WinAPI_DeleteObject($return[0])
    _GDIPlus_Shutdown() ; Shut down GDI+ library
    Return
    EndFunc ;==>createQR

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinAPI_CopyImage($hImage, $iType = 0, $xDesired = 0, $yDesired = 0, $iFlags = 0); from _WinAPIEx by Yashied
    Local $Ret = DllCall('user32.dll', 'ptr', 'CopyImage', 'ptr', $hImage, 'int', $iType, 'int', $xDesired, 'int', $yDesired, 'int', $iFlags)
    If (@error) Or (Not $Ret[0]) Then Return SetError(1, 0, 0)
    Return $Ret[0]
    EndFunc ;==>_WinAPI_CopyImage

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinMove($_iDiff = -1)
    Local $iHeight, $aWin = WinGetPos($hWnd)
    If $_iDiff = -1 Then
    $iHeight = $iH
    Else
    $iHeight = 305 + $_iDiff + 60
    EndIf
    WinMove($hWnd, '', $aWin[0], $aWin[1], $aWin[2], $iHeight)
    EndFunc ;==>_WinMove

    [/autoit]

    DL bisher: 63

  • genialo...thx dafür..

    kleines Manko, wenn ich ca. 2000 Zeichen reinpacke, verkleinert sich die Gui und kein QR ist zu sehen..

    p.s. gibt es so was auhc für 128er-BarCode??

  • Super gemacht :thumbup: . Ich guck mir mal später den Algo dahinter an, denn ich wollte das früher auch mal machen, bin aber kläglich gescheitert wegen fehlender Doku :D.
    Wie auch immer, es wäre noch nett, wenn man einstellen könnte ob es purer Text oder auch ein Link ist :).

    Nur keine Hektik - das Leben ist stressig genug

    • Offizieller Beitrag

    kleines Manko, wenn ich ca. 2000 Zeichen reinpacke, verkleinert sich die Gui und kein QR ist zu sehen..

    Kann ich leider nicht nachvollziehen. Ich kann exakt 3049 Zeichen codieren, der von dir geschilderte Effekt tritt bei mir erst ab Zeichen 3050 auf.
    Verwende mal stückweise kürzere Strings, um festzustellen bei welcher Schwelle es bei dir kippt.
    Wie gesagt: bei mir auf Win 7, 64Bit sind 3049 zeichen möglich.

    p.s. gibt es so was auhc für 128er-BarCode??

    Wenn du eine Dll findest, die das umsetzt und auch eine Beschreibung für die Dll hast, kann man das realisieren.

    oder auch ein Link ist

    Warum? Link wird doch von Redern automatisch erkannt und formatiert.
    Ähm, einen Algo kannst du dier hier nicht ansehen, aber in dem Link auf die EN-Forum-Seite findest du auch einen Verweis auf die Dll-Source. Da kannst du dir den Algo ansehen.

  • Hi BugFix,

    echt cooles Teil, habs direkt mal angeworfen und bekomme leider immer den Fehler:

    C:\Users\x0r\Desktop\QR_Creator.au3 (321) : ==> Subscript used with non-Array variable.:
    $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($return[0])
    $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($return^ ERROR

    Ganz gleich, ob ich jetzt die *.dll neu generieren lasse oder einfach ne Kopie anlege.

    €dit: füge ich statt $return[0] einfach $return ein, dann funktionierts. Strange?!
    €dit2:

    alt:

    [autoit]

    $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($return[0])

    [/autoit]


    neu:

    [autoit]

    $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($return)

    [/autoit]

    Gruß
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • könnte das was sein für die anderen Barcodes??:

    http://www.limilabs.com/barcode/download

    Da gibts ne DLL mit Examples und Hilfe-File

    edit:; grade gelesen, da wird ien watermark mit reingemacht :(


    Mit ein paar Schriften und dieser UDF klappt das einfach (für Bilder das ganze per GDI+ zeichnen und speichern)
    http://www.autoitscript.com/forum/topic/141103-barcode-udf/

    Edit: Die Schriften kannst du auch ohne installation verwenden: _WinAPI_AddFontResourceEx für GDI und GUI (WinApiEx.au3)
    und für GDIPlus: _GDIPlus_PrivateCollectionAddFontFile, _GDIPlus_PrivateCollectionAddMemoryFont, _GDIPlus_PrivateCollectionCreate, _GDIPlus_PrivateFontCollectionDispose (GDIP.au3)

    Einmal editiert, zuletzt von progandy (21. November 2012 um 22:05)

    • Offizieller Beitrag

    €dit: füge ich statt $return[0] einfach $return ein, dann funktionierts. Strange?!


    Hmm, also ich hatte vergessen in diesem Aufruf:

    [autoit]

    $return = DllCall("quricol32.dll", "HANDLE", "GetHBitmap", "str", $_sText, "int", 4, "int", 2)

    [/autoit]

    den Dateinamen mit der Pfadvariablen ($sDllQR) zu ersetzen. Allerdings dürfte das zu keinem Problem führen, da dann der Aufruf ebenfalls im @ScriptDir stattfindet.
    Mir ist absolut schleierhaft, dass

    [autoit]

    $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($return)

    [/autoit]

    funktionieren soll. Wenn $return[0] mit Arrayfehler abbricht bedeutet das, dass der Dll-Aufruf nicht erfolgreich war und demzufolge kannst du an

    [autoit]

    _GDIPlus_BitmapCreateFromHBITMAP

    [/autoit]

    kein Handle übergeben ($return hat nur den Wert 0). Somit muss diese Funktion fehlschlagen. :wacko:

  • Habs grad nochmal mit unterschiedlichen Eingaben probiert, er generiert tatsächlich auch unterschiedliche Bilder. Also geh ich mal davon aus, dass das Teil so funktioniert ($return statt $return[0]).

    Warum auch immer...

    und nochmal €dit:

    [autoit]

    $return = DllCall(@ScriptDir & "\quricol32.dll", "HANDLE", "GetHBitmap", "str", $_sText, "int", 4, "int", 2)

    [/autoit]

    statt:

    [autoit]

    $return = DllCall("quricol32.dll", "HANDLE", "GetHBitmap", "str", $_sText, "int", 4, "int", 2)

    [/autoit]

    funktioniert jetz auch mit $return[0]

    Kanns mir aber nicht erklären, da die *.dll wirklich mit im Scriptordner angelegt wird - man sieht die ja auch!

    Vielleicht könnts daran liegen, dass AutoIt von mir seit einiger Zeit zwingend verlangt, dass ich Variablen deklariere, oder ist das seit irgendeinem Update?

    Gruß
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

    Einmal editiert, zuletzt von x0r (22. November 2012 um 01:10)

  • Echt nice!
    Was noch ne coole Erweiterung wäre:
    Wenn man für die schwarzen "Blöcke" kleine Grafiken nehmen könnte oder z.B. noch weiße Punkte (wirkt cool) in die Blöcke setzen könnte ;)...
    Und/oder einfach alles direkt einfärben :)

    LG
    Aca

    • Offizieller Beitrag

    Wenn man für die schwarzen "Blöcke" kleine Grafiken nehmen könnte oder z.B. noch weiße Punkte (wirkt cool) in die Blöcke setzen könnte ;)...
    Und/oder einfach alles direkt einfärben :)


    Ob es cool wäre ist vom Betrachter abhängig - auf jeden Fall wäre es ziemlich bescheuert, da dann der Code nicht mehr (sicher) gelesen werden kann. :D Alle Barcodetypen basieren auf dem maximalen Kontrast zwischen Codeelement und Umgebung. Daher auch immer ein weißes Label mit schwarzem Code. ;)

  • Hey,... Ich glaube dein QR Code Creator kodiert das Falsch ^^

    Laut Wikipedia gibt die Zeichenkette "QR Code" folgendes aus:[Blockierte Grafik: http://1.2.3.11/bmi/upload.wik…8/87/QRCode.png]

    Allerdings gibt dein Skript folgendes aus:[Blockierte Grafik: http://www7.pic-upload.de/13.04.13/gihfipepi5py.png]

    Ich wollte jetzt nicht den Sinn deines Skriptes zerstören, aber ich finde du solltest das mal nachprüfen ob das wirklich so richtig ist oder ob es falsch auf Wikipedia steht! ^^
    (Quelle: http://de.wikipedia.org/wiki/QR-Code)

    LG. Make :D

    • Offizieller Beitrag

    Jo, das ist korrekt. Die Codes sehen optisch unterschiedlich aus - haben aber denselben Inhalt! (einfach mal den QR-Code Scanner draufhalten) ;)
    Das liegt an den verwendeten Qualitätsleveln. In Wikipedia wurde mit dem niedrigsten Level verschlüsselt, die Dll im Skript nutzt als Standard imho ein höheres Qualitätslevel = mehr Bildpunkte.