python+barcode快速生成条形码2-读取png图片的条形码(电商测试小工具)

背景

上册测试自助收银机条形码的时候,发现条形码没有保存下来,每次都要看开图片看看,重复的事情交给程序去做吧

需求

读取png图片,识别条形码即可

方案

python        3.8以上

pyzbar        0.1.9

pillow        10.3.0

在Mac上安装pyzbar库,通常需要先确保zbar的系统库已经安装在你的系统上。以下是在Mac上安装zbarpyzbar的步骤:

  1. 首先,你需要安装Homebrew,它是一个MacOS和Linux的包管理器。如果你还没有安装,请访问Homebrew官网并按照指示进行安装。

  2. 使用Homebrew安装zbar库:

  3. brew install zbar
    

代码 

定义了一个名为 read_barcodes_in_folder 的函数,该函数接受一个参数 folder_path,表示要读取条形码的文件夹路径。

在函数内部,使用 os.listdir(folder_path) 遍历文件夹中的所有文件。对于每个以 ".png" 结尾的文件名,构建完整的文件路径 image_path

def read_barcodes_in_folder(folder_path):
    """
    读取文件夹中所有 PNG 图像文件中的一维条形码
    :param folder_path: 文件夹路径
    """
    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        if filename.endswith(".png"):
            # 构建完整的文件路径
            image_path = os.path.join(folder_path, filename)

接下来,使用 Image.open(image_path) 打开图像文件,并将其保存在变量 barcode_image 中。

然后,调用 decode(barcode_image) 函数来解码条形码,并将结果保存在 decoded_objects 变量中。

如果 decoded_objects 不为空,说明在当前图像文件中检测到了条形码。程序会打印出文件名,并逐个输出解码后的条形码数据。

如果 decoded_objects 为空,说明在当前图像文件中没有检测到条形码。程序会打印出相应的提示信息。


            # 读取图像文件
            barcode_image = Image.open(image_path)

            # 解码条形码
            decoded_objects = decode(barcode_image)

            if decoded_objects:
                print(f"File: {filename}")
                for obj in decoded_objects:
                    print("Data:", obj.data.decode('utf-8'))
            else:
                print(f"No barcode detected in {filename}.")

最后,定义了一个变量 folder_path,表示要读取条形码的文件夹路径。然后调用 read_barcodes_in_folder(folder_path) 函数来执行读取操作。

这段代码的作用是遍历指定文件夹中的所有 PNG 图像文件,并尝试从中解码一维条形码。如果成功解码,将打印出文件名和解码后的数据;如果没有检测到条形码,则打印出相应的提示信息。

源码

import os
from pyzbar.pyzbar import decode
from PIL import Image


def read_barcodes_in_folder(folder_path):
    """
    读取文件夹中所有 PNG 图像文件中的一维条形码
    :param folder_path: 文件夹路径
    """
    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        if filename.endswith(".png"):
            # 构建完整的文件路径
            image_path = os.path.join(folder_path, filename)

            # 读取图像文件
            barcode_image = Image.open(image_path)

            # 解码条形码
            decoded_objects = decode(barcode_image)

            if decoded_objects:
                print(f"File: {filename}")
                for obj in decoded_objects:
                    print("Data:", obj.data.decode('utf-8'))
            else:
                print(f"No barcode detected in {filename}.")


# 图像文件夹路径
folder_path = "barcodes"

# 读取文件夹中所有 PNG 图像文件中的一维条形码
read_barcodes_in_folder(folder_path)

文件目录结构

运行结果

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python可以使用第三方库来实现对条形码的识别和生成。其中一种常用的库是`pyzbar`,它可以用于解码条形码。你可以通过安装`pyzbar`库来使用它。下面是一种识别条形码的示例代码: ```python from pyzbar import pyzbar import cv2 def read_barcodes(image): barcodes = pyzbar.decode(image) for barcode in barcodes: barcode_data = barcode.data.decode("utf-8") barcode_type = barcode.type text = f"Barcode Type: {barcode_type}, Barcode Data: {barcode_data}" print(text) # 读取图像文件 image = cv2.imread("barcode.jpg") # 将图像转换为灰度图像 gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) 调用函数对图像中的条形码进行识别 read_barcodes(gray_image) ``` 这段代码使用了`pyzbar`库中的`decode`函数来解码图像中的条形码,并将解码后的数据打印出来。需要注意的是,这段代码需要安装OpenCV库。如果你还没有安装OpenCV,你可以通过`pip install opencv-python`命令来安装。 另外,如果你想要生成条形码,可以使用`python-barcode`库。下面是一个生成条形码的示例代码: ```python from barcode import EAN13 from barcode.writer import ImageWriter def generate_barcode(data, filename): barcode = EAN13(data, writer=ImageWriter()) barcode.save(filename) # 生成条形码 generate_barcode("123456789012", "barcode.png") ``` 这段代码使用了`python-barcode`库中的`EAN13`类来生成条形码,并将条形码保存为图片文件。你可以通过更改`data`参数来生成不同的条形码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值