DEV Community

Cover image for How to Make a Barcode Generator in Python
Hichem MG
Hichem MG

Posted on

How to Make a Barcode Generator in Python

Generating barcodes programmatically can be a valuable tool for many applications, from inventory management to event ticketing. Python offers a convenient library called python-barcode library that simplifies the process of creating barcodes.

In this comprehensive guide, we'll explore how to set up the python-barcode library and use it to generate various types of barcodes in Python.

Table of Contents

  1. Introduction to Barcodes
  2. Installing python-barcode
  3. Generating Barcodes
  4. Customizing Barcodes
  5. Saving Barcodes to Files
  6. Advanced Features
  7. Practical Examples
  8. Common Pitfalls and How to Avoid Them
  9. Conclusion

1. Introduction to Barcodes

Barcodes are widely used in various industries for identification and tracking purposes. They represent data in a machine-readable format, which can be scanned and decoded using barcode readers.

So, instead of creating your barcodes with online tools like this one, you will be able to generate you own, offline, with a few lines of Python code.

There are different types of barcodes, including:

  • EAN-13: Commonly used in retail.
  • UPC-A: Widely used in North America for retail products.
  • Code 39: Often used in the automotive and defense industries.
  • Code 128: Used in logistics and transportation.

We will use the python-barcode library to generate these and other types of barcodes.

2. Installing python-barcode

Before we start generating barcodes, we need to install the python-barcode. This library is available via PyPI and can be installed using pip.

Installation Command:

pip install python-barcode
Enter fullscreen mode Exit fullscreen mode

Additionally, to save barcodes as images, you need the Pillow library.

Installation Command:

pip install pillow
Enter fullscreen mode Exit fullscreen mode

3. Generating Barcodes

Once you have the necessary libraries installed, you can start generating barcodes. The python-barcode library supports multiple barcode formats.

Here's a basic example of generating an EAN-13 barcode.

Example:

import barcode
from barcode.writer import ImageWriter

# Generate EAN-13 barcode
ean = barcode.get('ean13', '123456789102', writer=ImageWriter())
filename = ean.save('ean13_barcode')

print(f"Barcode saved as {filename}")
Enter fullscreen mode Exit fullscreen mode

In this example:

  • We import the barcode module and ImageWriter class.
  • We use the barcode.get method to create an EAN-13 barcode with the specified data ('123456789102').
  • We save the barcode as an image file using the save method.

4. Customizing Barcodes

The python-barcode library allows you to customize barcodes by adjusting parameters such as text, font size, and dimensions. You can modify these settings using the ImageWriter class.

Example:

import barcode
from barcode.writer import ImageWriter

# Customize barcode settings
options = {
    'text': 'Custom Text',
    'font_size': 10,
    'module_height': 15,
    'quiet_zone': 1
}

# Generate and save barcode with custom settings
ean = barcode.get('ean13', '123456789102', writer=ImageWriter())
filename = ean.save('custom_ean13_barcode', options=options)

print(f"Custom barcode saved as {filename}")
Enter fullscreen mode Exit fullscreen mode

In this example, we define a dictionary of options to customize the barcode's appearance. These options are then passed to the save method.

5. Saving Barcodes to Files

You can save barcodes to various file formats, such as PNG, JPEG, or SVG. The python-barcode library uses Pillow for raster images and has built-in support for SVG.

Saving as PNG:

import barcode
from barcode.writer import ImageWriter

# Generate EAN-13 barcode and save as PNG
ean = barcode.get('ean13', '123456789102', writer=ImageWriter())
filename = ean.save('ean13_barcode_png', options={'format': 'PNG'})

print(f"Barcode saved as {filename}.png")
Enter fullscreen mode Exit fullscreen mode

Saving as SVG:

import barcode

# Generate EAN-13 barcode and save as SVG
ean = barcode.get('ean13', '123456789102')
filename = ean.save('ean13_barcode_svg')

print(f"Barcode saved as {filename}.svg")
Enter fullscreen mode Exit fullscreen mode

6. Advanced Features

The python-barcode library offers advanced features for generating barcodes with more control and precision.

Generating Multiple Barcodes:

You can generate multiple barcodes in a loop and save them with unique filenames.

Example:

import barcode
from barcode.writer import ImageWriter

barcodes = ['123456789102', '234567890123', '345678901234']

for i, code in enumerate(barcodes):
    ean = barcode.get('ean13', code, writer=ImageWriter())
    filename = ean.save(f'ean13_barcode_{i}')
    print(f"Barcode {code} saved as {filename}")
Enter fullscreen mode Exit fullscreen mode

Adding Custom Text:

You can add custom text below the barcode using the text option.

Example:

import barcode
from barcode.writer import ImageWriter

options = {'text': 'Product 001'}

# Generate EAN-13 barcode with custom text
ean = barcode.get('ean13', '123456789102', writer=ImageWriter())
filename = ean.save('ean13_barcode_with_text', options=options)

print(f"Barcode with custom text saved as {filename}")
Enter fullscreen mode Exit fullscreen mode

7. Practical Examples

Example 1: Generating a UPC-A Barcode for a Product

Let's generate a UPC-A barcode for a product and save it as a PNG image:

import barcode
from barcode.writer import ImageWriter

# Product code
product_code = '012345678905'

# Generate UPC-A barcode
upc = barcode.get('upca', product_code, writer=ImageWriter())
filename = upc.save('upca_product_barcode', options={'format': 'PNG'})

print(f"UPC-A barcode saved as {filename}.png")
Enter fullscreen mode Exit fullscreen mode

Example 2: Creating Barcodes for Inventory Management

Generate barcodes for inventory items and save them as SVG files for web use:

import barcode

# List of inventory items
inventory_codes = ['123456789012', '987654321098', '123456780123']

for code in inventory_codes:
    ean = barcode.get('ean13', code)
    filename = ean.save(f'inventory_{code}')
    print(f"Inventory barcode {code} saved as {filename}.svg")
Enter fullscreen mode Exit fullscreen mode

8. Common Pitfalls and How to Avoid Them

Invalid Barcode Data:

Ensure that the data you provide conforms to the specifications of the barcode type. For example, EAN-13 requires 12 digits plus a check digit.

Example:

import barcode
from barcode.writer import ImageWriter

# Invalid data for EAN-13 (13 digits without check digit)
try:
    ean = barcode.get('ean13', '1234567890123', writer=ImageWriter())
except barcode.errors.BarcodeError as e:
    print(f"Error: {e}")
Enter fullscreen mode Exit fullscreen mode

Incorrect File Format:

Specify the correct file format when saving barcodes to avoid unsupported format errors.

Example:

import barcode
from barcode.writer import ImageWriter

# Generate and save barcode as JPEG (unsupported format in some cases)
try:
    ean = barcode.get('ean13', '123456789102', writer=ImageWriter())
    filename = ean.save('ean13_barcode_jpeg', options={'format': 'JPEG'})
except ValueError as e:
    print(f"Error: {e}")
Enter fullscreen mode Exit fullscreen mode

9. Conclusion

Generating barcodes in Python using the python-barcode library is a straightforward and efficient process. By leveraging the power of this library, you can create, customize, and save various types of barcodes for different applications.

Whether you're working on a retail system, inventory management, or any other project that requires barcodes, this guide provides the foundational knowledge and practical examples to get you started.

Experiment with different barcode types and customization options to fit your specific needs. With the flexibility and simplicity of python-barcode, you can integrate barcode generation seamlessly into your Python projects.

Top comments (0)