TGC Codebase Backup



DecodeQRCode live test by Coilwinder

12th Jul 2017 12:02
Summary

Example of decoding a QR code from a live camera feed on a device. Slightly modified from AGK example "DecodeQRCode", which uses a camera app to get the user to take a picture befo



Description

Example of decoding a QR code from a live camera feed on a device.

Slightly modified from AGK example "DecodeQRCode", which uses a camera app to get the user to take a picture before decoding.



Code
                                    ` This code was downloaded from The Game Creators
                                    ` It is reproduced here with full permission
                                    ` http://www.thegamecreators.com
                                    
                                    // Project: DecodeQRCode live test
// Created: 2017-07-10

// Slightly modified from AGK example "DecodeQRCode"
// https://www.appgamekit.com/documentation/Reference/Image/DecodeQRCode.htm


SetDisplayAspect( 1.0 / 1.0 )
setvirtualresolution(100,100)
SetResolutionMode( 1 )
SetSyncRate( 10, 0 )
SetOrientationAllowed( 1,1,1,1 )

setclearcolor(128,128,128)

global qrtext$
qrtext$="hello my facebook friends :-)"
global qrimage
qrimage=encodeqrcode(qrtext$,0)

//saveimage(qrimage,"qr.png")

global qrsprite
qrsprite=createsprite(qrimage)
setspritesize(qrsprite,100,100)


global cam
cam = 0 // usually back-facing camera


get=1
AddVirtualButton( get,5, 5, 10 )
SetVirtualButtonText( get, "Cam" )
SetVirtualButtonColor( get, 64, 64, 192 )
SetVirtualButtonAlpha( get, 192 )

url=2
AddVirtualButton( url,5, 15, 10 )
SetVirtualButtonText( url, "URL" )
SetVirtualButtonColor( url, 64, 64, 192 )
SetVirtualButtonAlpha( url, 192 )

global ende=12
AddVirtualButton( ende,100-5, 5, 10 )
SetVirtualButtonText( ende, "End" )
SetVirtualButtonColor( ende, 64, 64, 192 )
SetVirtualButtonAlpha( ende, 192 )

Text()

do
 //Print(qrtext$)
 if GetVirtualButtonPressed( get )  then GetCamImage()
 if GetVirtualButtonPressed( ende ) then exit
 if GetVirtualButtonReleased( url )
    if HaveASpace(qrtext$) =0
    else
     message("a real url have no spaces")
    endif
    if left(qrtext$,3)="???"
        message("i have no url")
    else
        OpenBrowser(qrtext$)
    endif
 endif
 Sync()
loop
end

function Text()
    i=1
    if gettextexists(i) then deletetext(i)
    CreateText(i,qrtext$)
    SetTextPosition(i,getvirtualwidth()/2,0)
    SetTextSize(i,3)
    SetTextAlignment( i, 1 )
    SetTextColor (i,0,0,0 ,255)
endfunction


function GetCamImage()

    qrtext$="???"
    if GetImageExists(qrimage) then DeleteImage(qrimage)

    if getcameraexists()=1
        SetDeviceCameraToImage(cam,qrimage) //cam input goto image, image for id will created
        if qrsprite then deletesprite(qrsprite)
        qrsprite=createsprite(qrimage)
        setspritesize(qrsprite,GetVirtualWidth(),GetVirtualHeight())
        setspriteposition(qrsprite,0,0)

        while qrtext$="???"
            qrtext$=decodeqrcode(qrimage)
            if len(qrtext$)=0 then qrtext$="???"
            Text()
            if GetVirtualButtonPressed( ende ) then exit
            Sync()
        endwhile
        SetDeviceCameraToImage(cam, 0) // Stop streaming
    else
        qrtext$="can't find a cam for get a picture with qr code"
    endif

endfunction


function HaveASpace(abc$)

 c=0
 for i=1 to len(abc$)
    if mid(abc$,i,1)=" "
        c=c+1
        exit
    endif
 next

endfunction c