Scale

Scale is the unit used when displaying an image on a computer screen, mobile phone, etc.

When setting the scale to 1, it represents the smallest unit that can be displayed on the screen. In 1D barcodes, this means each vertical black bar will be represented by a one pixel wide line. If you set a scale of 2, the vertical bar will be represented by a two pixel wide line, and so on.

This is the same concept for 2D barcodes: a black bit will be 1×1 pixels for scale of 1, and 2×2 pixels for scale of 2.

As you can see, it is not possible to choose a scale between 1 and 2 since a barcode cannot be written using 1.5 pixel sizes.

The size of the barcode itself will depend on the resolution and screen size of your user. For a same monitor size, if you compare a screen resolution of 1600×1200 and 800×600, the barcode will appear smaller to the eye on the first screen than the second.

This property can be set with the method “setScale(2)” from any barcodes.

As shown below, a larger scale will increase the size of the image displayed.

Scale 2 - DPI 72

Scale 2 – DPI 72

Scale 3 - DPI 72

Scale 3 – DPI 72

DPI (dot per inch)

This unit of scaling is for printing. This will tell your image how many “dots” (pixels) will be printed within one inch on paper. The default value is 72. The value usually used for printing is 300.

If you take two images with the same scaling (the images look exactly the same on the screen) but with a DPI of 72 and a DPI of 300, the first image will appear larger than the second one on paper. However, if your printer supports 300 DPI correctly, the second image will have a better quality than the first one.

This property can be set on the BCGDrawing object with “setDPI(300)”.

Two images of the same scale and different DPI’s will be displayed the same way on a screen:

Scale 3 - DPI 72

Scale 3 – DPI 72

Scale 3 - DPI 300

Scale 3 – DPI 300

Conclusion

If you plan to print your barcode, you must consider the setDPI() method. If you only display the image on the screen, then you would never need to use setDPI() and only the setScale() method.

If you want to have a bigger image than scale 1 but smaller than scale 2, you would need to resize the image with resampling. Doing so will introduce anti-aliasing in your image and possibly problems to read the barcode. Introducing anti-aliasing into an image means one bar for a 1D barcode will not be as clear as 1 pixel; it may be 1 pixel black, and 1 pixel gray.

If you still want to resize your barcode, you can use the method imagecopyresampled() from PHP by getting the image resource from the BCGDrawing with the method get_im().