python-barcode
python-barcode copied to clipboard
Create barcode without plain text
Is there an option to generate the barcode without the plain text?
You can subclass writers and override the text render method. It probably makes sense to add a flag for this though, since it's a rather common request.
class ImageWitoutTextWriter(ImageWriter):
def _paint_text(self, xpos, ypos):
pass
I'm added in class ImageWriter variable print_text. Default value is True, if need create barcode without text, writer=ImageWriter(False)
`class ImageWriter(BaseWriter):
def __init__(self, print_text=True):
BaseWriter.__init__(self, self._init, self._paint_module,
self._paint_text, self._finish)
self.format = 'PNG'
self.dpi = 300
self._image = None
self._draw = None
self.print_text = print_text
def _init(self, code):
size = self.calculate_size(len(code[0]), len(code), self.dpi)
if not self.print_text:
size = (size[0], int(size[1] * 0.7))
self._image = Image.new('RGB', size, self.background)
self._draw = ImageDraw.Draw(self._image)
def _paint_module(self, xpos, ypos, width, color):
size = [(mm2px(xpos, self.dpi), mm2px(ypos, self.dpi)),
(mm2px(xpos + width, self.dpi),
mm2px(ypos + self.module_height, self.dpi))]
self._draw.rectangle(size, outline=color, fill=color)
def _paint_text(self, xpos, ypos):
if self.print_text:
font = ImageFont.truetype(FONT, self.font_size * 2)
width, height = font.getsize(self.text)
pos = (mm2px(xpos, self.dpi) - width // 2,
mm2px(ypos, self.dpi) - height // 4)
self._draw.text(pos, self.text, font=font, fill=self.foreground)`
Would you like to make that into a PR?
For anyone reading this today, _paint_text
has been renamed to _create_text
.
Was this ever integrated into main? I don't see it in https://github.com/WhyNotHugo/python-barcode/blob/main/barcode/writer.py
For anyone reading this today,
_paint_text
has been renamed to_create_text
.
Just to clarify, the rename is only on SVGWriter, in ImageWriter still uses the _paint_text