Created
April 20, 2023 10:05
-
-
Save cdpath/202c4d1a68c2766e759b7f2db736515f to your computer and use it in GitHub Desktop.
generate random barcode
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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