Sample code for 30+ languages & platforms
Xbase++ Requires Chilkat v11.7.0+

Generate a QR Code PNG in Memory

See more QR Code Examples

Demonstrates getting a QR code image without writing a file. With no output options the result is a PNG returned as base64 in outputs[0].base64 of the response. The example decodes it into a BinData, which holds the bytes of the PNG to send in an HTTP response, store in a database, attach to an email, or save.

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oJson
LOCAL oFmt
LOCAL oJsonOut
LOCAL oBdPng

nSuccess := 0

//  This example requires the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

oJson := CreateObject("Chilkat.JsonObject")
oJson:UpdateString("payload.text", "https://www.chilkatsoft.com/")
oJson:UpdateInt("render.moduleSize", 6)

oFmt := CreateObject("Chilkat.Formats")
oJsonOut := CreateObject("Chilkat.JsonObject")
nSuccess := oFmt:QrCode("generate", oJson, oJsonOut)
IF (nSuccess == 0)
    ? oFmt:LastErrorText
    oJson:destroy()
    oFmt:destroy()
    oJsonOut:destroy()
    RETURN
ENDIF

? "format: " + oJsonOut:StringOf("outputs[0].format")
? "MIME type: " + oJsonOut:StringOf("outputs[0].mimeType")
? "image: " + Str(oJsonOut:IntOf("outputs[0].width")) + " x " + Str(oJsonOut:IntOf("outputs[0].height")) + " pixels"

//  outputs[0].base64 is the PNG file, base64 encoded.
oBdPng := CreateObject("Chilkat.BinData")
nSuccess := oBdPng:AppendEncoded(oJsonOut:StringOf("outputs[0].base64"), "base64")
IF (nSuccess == 0)
    ? oBdPng:LastErrorText
    oJson:destroy()
    oFmt:destroy()
    oJsonOut:destroy()
    oBdPng:destroy()
    RETURN
ENDIF

? "PNG bytes: " + Str(oBdPng:NumBytes)

//  The BinData holds the image.  Here it is simply saved.
nSuccess := oBdPng:WriteFile("qa_output/qr_in_memory.png")
IF (nSuccess == 0)
    ? oBdPng:LastErrorText
    oJson:destroy()
    oFmt:destroy()
    oJsonOut:destroy()
    oBdPng:destroy()
    RETURN
ENDIF

//  The PNG held in bdPng:

//  image

//  Sample output:

//  format: png
//  MIME type: image/png
//  image: 222 x 222 pixels
//  PNG bytes: 877

oJson:destroy()
oFmt:destroy()
oJsonOut:destroy()
oBdPng:destroy()