Xbase++ Requires Chilkat v11.7.0+
Xbase++
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
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:
//
// Sample output:
// format: png
// MIME type: image/png
// image: 222 x 222 pixels
// PNG bytes: 877
oJson:destroy()
oFmt:destroy()
oJsonOut:destroy()
oBdPng:destroy()