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

QR Code Colors and Transparent Background

See more QR Code Examples

Demonstrates colored QR codes. render.foreground is the color of the dark modules and render.background the color behind them, each as #RRGGBB. Either can instead be an object with a color and an opacity from 0 to 1, and a background opacity of 0 gives a PNG with a transparent background to place over a page or a design. Readers need contrast: keep the modules clearly darker than whatever ends up behind them.

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
var
success: Integer;
fmt: TChilkatFormats;
jsonOut: TChilkatJsonObject;
json: TChilkatJsonObject;
json2: TChilkatJsonObject;

begin
success := 0;

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

fmt := TChilkatFormats.Create(Self);
jsonOut := TChilkatJsonObject.Create(Self);

//  Dark blue modules on a pale yellow background.
json := TChilkatJsonObject.Create(Self);
json.UpdateString('payload.text','https://www.chilkatsoft.com/');
json.UpdateInt('render.moduleSize',6);
json.UpdateString('render.foreground','#1B3A6B');
json.UpdateString('render.background','#FFF8DC');
json.UpdateString('output.path','qa_output/qr_blue.png');
json.UpdateBool('output.overwrite',1);
json.UpdateString('output.return','none');
success := fmt.QrCode('generate',json.ControlInterface,jsonOut.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(fmt.LastErrorText);
    Exit;
  end;
Memo1.Lines.Add('colored: ' + jsonOut.StringOf('outputs[0].path') + ', ' + IntToStr(jsonOut.IntOf('outputs[0].byteCount')) + ' bytes');

//  The image written to qa_output/qr_blue.png:

//  image

//  The same modules on a fully transparent background.
json2 := TChilkatJsonObject.Create(Self);
json2.UpdateString('payload.text','https://www.chilkatsoft.com/');
json2.UpdateInt('render.moduleSize',6);
json2.UpdateString('render.foreground','#1B3A6B');
json2.UpdateString('render.background.color','#FFFFFF');
json2.UpdateNumber('render.background.opacity','0');
json2.UpdateString('output.path','qa_output/qr_transparent.png');
json2.UpdateBool('output.overwrite',1);
json2.UpdateString('output.return','none');
success := fmt.QrCode('generate',json2.ControlInterface,jsonOut.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(fmt.LastErrorText);
    Exit;
  end;
Memo1.Lines.Add('transparent: ' + jsonOut.StringOf('outputs[0].path') + ', ' + IntToStr(jsonOut.IntOf('outputs[0].byteCount')) + ' bytes');

//  qa_output/qr_transparent.png, placed here over a checkerboard and over a colored page
//  to show that whatever is behind the image shows through:

//  image

//  Sample output:

//  colored: qa_output/qr_blue.png, 1345 bytes
//  transparent: qa_output/qr_transparent.png, 1377 bytes