Skip to content

Instantly share code, notes, and snippets.

@cdpath
Created April 20, 2023 10:05
Show Gist options
  • Save cdpath/202c4d1a68c2766e759b7f2db736515f to your computer and use it in GitHub Desktop.
Save cdpath/202c4d1a68c2766e759b7f2db736515f to your computer and use it in GitHub Desktop.
generate random barcode
# pip install "python-barcode[images]"
import random
import barcode
from barcode import generate
from barcode.writer import ImageWriter
def calculate_ean13_checksum(code):
odd_sum = sum(int(x) for i, x in enumerate(code) if i % 2 == 0)
even_sum = sum(int(x) for i, x in enumerate(code) if i % 2 == 1)
total_sum = odd_sum * 3 + even_sum
return (10 - total_sum % 10) % 10
def generate_ean13(prefix):
random_digits = [str(random.randint(0, 9)) for _ in range(11 - len(prefix))]
code_without_checksum = prefix + ''.join(random_digits)
checksum = calculate_ean13_checksum(code_without_checksum)
return code_without_checksum + str(checksum)
def generate_upc_from_ean13(ean13_code):
return ean13_code[1:]
def generate_barcode_image(upc_code, output_file):
upc_image = generate('UPC', upc_code, output=output_file, writer=ImageWriter(), writer_options={'module_width': 0.4, 'module_height': 20})
return upc_image
def main():
ean13_prefix = "515"
ean13_code = generate_ean13(ean13_prefix)
upc_code = generate_upc_from_ean13(ean13_code)
output_file = "upc_barcode.png"
print("EAN-13 code:", ean13_code)
print("UPC code:", upc_code)
generate_barcode_image(upc_code, output_file)
print(f"Barcode image saved as {output_file}")
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment