lincolnloop / python-qrcode

Python QR Code image generator
https://pypi.python.org/pypi/qrcode
Other
4.25k stars 660 forks source link

Can you make the background of qrcode transparent? #346

Closed Dan-Veinberg closed 8 months ago

Dan-Veinberg commented 8 months ago

I was wondering if you can make the background transparent when creating solidfillcolormask?

Dan-Veinberg commented 8 months ago

I made the background transparent by using the python pil library. The background must be white because it looks for white pixels.

`import qrcode import PIL import sys from PIL import Image from qrcode import constants

from qrcode.image.styledpil import StyledPilImage from qrcode.image.styles.moduledrawers.pil import GappedSquareModuleDrawer from qrcode.image.styles.moduledrawers.pil import CircleModuleDrawer from qrcode.image.styles.moduledrawers.pil import RoundedModuleDrawer from qrcode.image.styles.moduledrawers.pil import VerticalBarsDrawer from qrcode.image.styles.moduledrawers.pil import HorizontalBarsDrawer

from qrcode.image.styles.colormasks import SolidFillColorMask from qrcode.image.styles.colormasks import RadialGradiantColorMask from qrcode.image.styles.colormasks import HorizontalGradiantColorMask from qrcode.image.styles.colormasks import SquareGradiantColorMask from qrcode.image.styles.colormasks import VerticalGradiantColorMask

qr = qrcode.QRCode( version=2, error_correction= qrcode.constants.ERROR_CORRECT_Q, box_size=10, border=4, )

qr.add_data("http://google.com")

img_2 = qr.make_image(image_factory=StyledPilImage, module_drawer=GappedSquareModuleDrawer(1), color_mask=SolidFillColorMask((255,255,255),(0,0,0))) img_2.save("qrcodetransparent" + ".png")

img = Image.open('qrcodetransparent.png') img = img.convert("RGBA") datas = img.getdata()

newData = [] for item in datas: if item[0] == 255 and item[1] == 255 and item[2] == 255: newData.append((255, 255, 255, 0)) else: newData.append(item)

img.putdata(newData) img.save("qrcodetransparent.png", "PNG")`

Dan-Veinberg commented 8 months ago

I did it using python PIL library.