CodeNewbie Community 🌱

Cover image for How to Create Barcodes with Python
Hichem MG
Hichem MG

Posted on

How to Create Barcodes with Python

Barcodes are an essential part of modern commerce, used in retail, inventory management, and many other applications. Generating barcodes programmatically can be a valuable skill, especially if you need to automate the creation of barcodes for products, documents, or other items.

In this tutorial, we will explore how to create a barcode generator in Python using the python-barcode library. We will cover the installation, usage, and practical examples to help you get started.

Table of Contents


1. Introduction to Barcodes

Barcodes are machine-readable representations of data that consist of varying widths and spacing of parallel lines. They are widely used for tracking products in stores, managing inventory, and handling various data in a compact format.

There are different types of barcodes, including:

  • EAN (European Article Number)
  • UPC (Universal Product Code)
  • Code 39
  • Code 128
  • QR Codes (though these are technically 2D barcodes)

We will focus on generating standard 1D barcodes using the python-barcode library.

2. Setting Up Your Environment

Before we start generating barcodes, ensure that you have Python installed on your machine. You can download the latest version of Python from the official Python website. Additionally, it's a good practice to create a virtual environment for your projects to manage dependencies.

Creating a Virtual Environment

Open your terminal or command prompt and run the following commands to create and activate a virtual environment:

# Create a virtual environment
python -m venv barcode_env

# Activate the virtual environment (Windows)
barcode_env\Scripts\activate

# Activate the virtual environment (MacOS/Linux)
source barcode_env/bin/activate
Enter fullscreen mode Exit fullscreen mode

3. Installing the python-barcode Library

The python-barcode library is a simple yet powerful library for generating barcodes in Python. Install the library using pip:

pip install python-barcode
Enter fullscreen mode Exit fullscreen mode

4. Generating Barcodes

Once the library is installed, you can start generating barcodes. The basic usage involves creating a barcode object and rendering it. Here’s a simple example to generate an EAN-13 barcode:

Example:

import barcode
from barcode.writer import ImageWriter

# Generate an EAN-13 barcode
ean = barcode.get('ean13', '123456789012', writer=ImageWriter())

# Save the barcode as an image file
filename = ean.save('ean13_barcode')
print(f"Barcode saved as {filename}")
Enter fullscreen mode Exit fullscreen mode

This code generates an EAN-13 barcode for the number 123456789012 and saves it as an image file named ean13_barcode.png.

5. Customizing Barcodes

The python-barcode library allows for customization of the generated barcodes. You can set various options such as the text to display below the barcode, the font size, and the barcode's module width and height.

Example:

import barcode
from barcode.writer import ImageWriter

# Customize barcode options
options = {
    'write_text': True,
    'text': 'Custom Text',
    'font_size': 10,
    'module_width': 0.2,
    'module_height': 15,
}

# Generate a Code128 barcode with custom options
code128 = barcode.get('code128', 'CustomCode128', writer=ImageWriter())

# Save the customized barcode as an image file
filename = code128.save('custom_code128_barcode', options=options)
print(f"Customized barcode saved as {filename}")
Enter fullscreen mode Exit fullscreen mode

6. Saving Barcodes as Images

By default, the python-barcode library saves barcodes as PNG images when using ImageWriter. You can also save barcodes in other formats such as SVG.

Example:

import barcode

# Generate an EAN-13 barcode and save it as SVG
ean = barcode.get('ean13', '123456789012')

# Save the barcode as an SVG file
filename = ean.save('ean13_barcode_svg')
print(f"Barcode saved as {filename}.svg")
Enter fullscreen mode Exit fullscreen mode

7. Advanced Usage

The python-barcode library provides advanced features for more complex barcode generation needs. You can create barcodes directly as PIL images for further manipulation or integrate barcode generation into web applications using frameworks like Flask or Django.

Generating Barcodes as PIL Images

from PIL import Image
import barcode
from barcode.writer import ImageWriter

# Generate an EAN-13 barcode and get it as a PIL image
ean = barcode.get('ean13', '123456789012', writer=ImageWriter())
pil_image = ean.render()

# Display the barcode image
pil_image.show()
Enter fullscreen mode Exit fullscreen mode

Integrating with Flask

from flask import Flask, send_file
import barcode
from barcode.writer import ImageWriter
from io import BytesIO

app = Flask(__name__)

@app.route('/barcode/<code>')
def generate_barcode(code):
    # Generate a Code128 barcode and save it to a BytesIO object
    code128 = barcode.get('code128', code, writer=ImageWriter())
    barcode_image = BytesIO()
    code128.write(barcode_image)
    barcode_image.seek(0)

    return send_file(barcode_image, mimetype='image/png')

if __name__ == '__main__':
    app.run(debug=True)
Enter fullscreen mode Exit fullscreen mode

8. Practical Examples

Generating Barcodes for Product Inventory

You can generate barcodes for a list of products and save them as image files. This is useful for creating barcodes for inventory management systems.

import barcode
from barcode.writer import ImageWriter

products = [
    {'name': 'Product1', 'code': '123456789012'},
    {'name': 'Product2', 'code': '987654321098'},
    {'name': 'Product3', 'code': '192837465012'},
]

for product in products:
    ean = barcode.get('ean13', product['code'], writer=ImageWriter())
    filename = ean.save(f"{product['name']}_barcode")
    print(f"Barcode for {product['name']} saved as {filename}.png")
Enter fullscreen mode Exit fullscreen mode

Generating Barcodes for Event Tickets

You can create unique barcodes for event tickets, ensuring each ticket has a unique identifier.

import barcode
from barcode.writer import ImageWriter

def generate_ticket_barcode(ticket_id):
    code128 = barcode.get('code128', ticket_id, writer=ImageWriter())
    filename = code128.save(f"ticket_{ticket_id}_barcode")
    return filename

ticket_ids = ['TICKET001', 'TICKET002', 'TICKET003']

for ticket_id in ticket_ids:
    filename = generate_ticket_barcode(ticket_id)
    print(f"Barcode for ticket {ticket_id} saved as {filename}.png")
Enter fullscreen mode Exit fullscreen mode

9. Common Pitfalls and How to Avoid Them

Invalid Barcode Data

Ensure that the data you provide to the barcode generator is valid for the type of barcode you are generating. For example, EAN-13 barcodes require exactly 12 digits of input.

Example:

import barcode
from barcode.writer import ImageWriter

# This will raise a ValueError because the input is not 12 digits long
try:
    ean = barcode.get('ean13', '123', writer=ImageWriter())
    filename = ean.save('invalid_barcode')
except ValueError as e:
    print(f"Error: {e}")  # Output: Error: EAN-13 requires 12 digits
Enter fullscreen mode Exit fullscreen mode

Handling File Saving Errors

When saving barcode images, ensure that the directory exists and you have the necessary permissions to write files.

Example:

import os
import barcode
from barcode.writer import ImageWriter

# Ensure the directory exists
output_dir = 'barcodes'
os.makedirs(output_dir, exist_ok=True)

# Save the barcode in the specified directory
ean = barcode.get('ean13', '123456789012', writer=ImageWriter())
filename = os.path.join(output_dir, 'ean13_barcode')
filename = ean.save(filename)
print(f"Barcode saved as {filename}.png")
Enter fullscreen mode Exit fullscreen mode

10. Conclusion

Generating barcodes in Python is a straightforward process with the python-barcode library. Whether you need to create barcodes for inventory management, product labeling, or any other application, this library provides a simple and flexible solution. By understanding how to customize and manipulate barcodes, you can integrate barcode generation into your Python projects and automate various tasks efficiently.

Instead of generating Barcodes online, you should now have a solid understanding of how to generate, customize, and save barcodes in Python. Experiment with different barcode types and settings to see how they can be applied to your specific needs. Happy coding!

Top comments (1)

Collapse
 
alainberger profile image
Alain Berger

I appreciate the tutorial, being new to Python but not to barcodes. I used a lot of PHP libraries which are somewhat similar, the standards haven't evolved too much, but it's definitely losing ground to QR Codes, at least here in Belgium and Europe.
Best,
Alain
Florist, Anderlecht, Belgium