Python İle QR Kod Görüntüleri ve SVG Oluşturma

Bu yazımızda Python kullanarak hızlı ve en basit şekliyle QR kod (Kare Kod) oluşturmayı anlatıyoruz. QrCode Kütüphanesi ile saniyeler içerisinde kendi QR kodlarınız oluşturabileceksiniz.

Bir sonraki yazımızda da Python ve OpenCV kullanarak QR kod okumayı ve içindeki bilgiyi yazdırmayı anlatacağız.

QR Kod KareKod Nedir?

Quick Response (Hızlı Yanıt) kısa ve yaygın adıyla  QR kodu, hızlı okunabilirliği ve nispeten büyük depolama kapasitesi nedeniyle kullanılan iki boyutlu bir piktografik(1) koddur. Kod, beyaz zemin üzerine kare şeklinde düzenlenmiş siyah modüllerden oluşur. 

Karekod; Orjinal adı datamatrix olan 2 boyutlu barkod tipli barkodlara verilen türkçe isimdir. karekod (datamatrix) tipi barkodlar klasik tek boyutlu (çizgilerden oluşan) barkodlardan farklı olarak beyaz ve siyah kare veya dikdörtgenlerden oluşan matris yapısındaki barkodlardır.
Avantajı klasik bir boyutlu barkodlara nazaran daha çok veriyi içerebilmesidir. Örneğin karekod olarak adlandırılan barkod tipi 2.335 karakter içerebilir.

Örnek QR code 

Yukarıda örneğini gördğünüz QR kodun içinde “https://jn7.net” bilgisi bulunmaktadır.

Merak edenler için : (1)Piktogram ya da piktograf bir eşyayı, bir objeyi, bir yeri, bir işleyişi, bir kavramı resmetme yoluyla temsil eden semboldür. Bu sembollere dayalı yazı sistemine “piktografi” denir.

Python İle QR Kod (Karekod) Oluşturma

Gerekli Kütüphanelerin Kurulumu

Python’a eklemeniz gereken ilk kütüphane Pillow kütüphanesidir. Daha yeni sürümlerde yaygın olarak PIL veya pillow olarak bilinen Python Görüntüleme Kütüphanesi (Pillow olarak bilinen daha yeni sürümlerde), birçok farklı görüntü dosyası formatını açma, değiştirme ve kaydetme desteği veren Python programlama dili için ücretsiz bir kütüphanedir. Windows, Mac OS X ve Linux için kullanılabilir. QR Kodunu oluşturmak için pilloww kütüphanesinden yararlanan qrcode kütüphanesini kullanacağız

Bu modülü terminalinize aşağıdaki komutu uygulayarak yükleyebilirsiniz:

#Görüntü dosyaları ile çalışmak için gerekli kütüphane
pip install Pillow

pillow kütüphanesinin kurulumu bittiğinde, QR jeneratör kütüphanesinin kurulumuna devam edebilirsiniz:

#QR Kodları üretmek için gerekli kütüphanemiz
pip install qrcode

Aksi takdirde, Yastık olmadan QR Kod kitaplığı ile bir görüntü oluşturulurken ‘ImportError: No module named Image’ mesajını alırsınız . Pillow veya qrcode hakkında daha fazla bilgi için lütfen ana sayfalarını ziyaret edin.

Görüntü olarak QR Kodu oluşturma

Bir QR Kodu oluşturmak için yazmanız gereken kodu anlamak çok basit ve oldukça basittir. Önce qrcode kütüphanesini içe aktarın ve bundan QRCode yöntemini kullanın, ardından gerekli bağımsız değişkenleri sağlayın:

#QR Code Kütüphansesini uygulamamıza dahil ediyoruz
import qrcode

# Qr Kod oluşturma olayı
qr = qrcode.QRCode(
    version = 1,
    error_correction = qrcode.constants.ERROR_CORRECT_H,
    box_size = 10,
    border = 4,
)

# karekod içinde saklamak istediğiniz verileriniz
data = "QR kod içinde saklamak istedikleriniz. https://jn7.net"

# Veriyi ekleme
qr.add_data(data)
qr.make(fit=True)

# Görüntü dosyasının oluşturulması
img = qr.make_image()

# Oluşturulan görüntü dosyasının kayıt biçimleri. İstediğiniz formatı seçebilirsiniz.:
# img.save("image.png")
# img.save("image.bmp")
# img.save("image.jpeg")
img.save("image.jpg")

Kodumuzun tamamı bu kadar. Python kod dosyasının bulunduğu klasöre “image.jpg” ismiyle bir görüntü dosyası oluşacaktır.

Oluşturduğumuz karekodumuz.

Hata düzeltme

QR Kodunda, kod hasar görmüş veya kirliyse verileri geri yükleme hatası düzeltme özelliği vardır. Bu kütüphane ile dört hata düzeltme seviyesi mevcuttur, bunlar qrcode.constants isimli bir nesnede saklanır  :

  • ERROR_CORRECT_L: Yaklaşık% 7 veya daha az hata düzeltilebilir.
  • ERROR_CORRECT_M: (varsayılan) Yaklaşık% 15 veya daha az hata düzeltilebilir.
  • ERROR_CORRECT_Q: Yaklaşık% 25 veya daha az hata düzeltilebilir.
  • ERROR_CORRECT_H: Yaklaşık% 30 veya daha az hata düzeltilebilir.

error_correctionQR Kodunun oluşturulması sırasında mülkün değeri olarak sağlanmalıdır  .

QR Kod boyutu

Oluşturulan QR kodunun boyutunu bu box_sizeözelliği ile değiştirebilirsiniz.

SVG olarak QRCode Oluşturma

QRCode’un görüntü yerine bir SVG dosyası oluşturmak istiyorsanız , eski sürüm SVG görüntüleri oluşturmak için kullanılamadığından , lxml kütüphanesini de yüklemeniz  gerekir.

SVG : Ölçeklenebilir Vektör Grafikleri (İngilizce: İngilizce: Scalable Vector Graphics ya da kısaca İngilizce: SVG), 1999 yılından bu yana W3C Konsorsiyumu tarafından geliştirilen açık standart XML tabanlı bir vektörel grafik biçimidir. W3C Konsorsiyumu tarafından kullanımı tavsiye edilen bir dosya biçimidir.

xml.etree.ElementTree. lxml bir XML araç takımıdır C kütüphaneleri libxml2 ve libxslt için bir Pythonic bağlayıcıdır. Bu kitaplıkların hız ve XML özelliklerinin eksiksizliğini, çoğunlukla uyumlu ancak iyi bilinen ElementTree API’sinden daha üstün olan yerel bir Python API’sinin sadeliği ile birleştirmesi benzersizdir.

Bu modülü pip kullanarak kurmak için terminalde aşağıdaki komutu çalıştırın:

pip install lxml

Yüklemeden sonra, oluşturulacak SVG dosyası için bir ElementTree oluşturabilirsiniz. SVG’nin üretim yöntemi ihtiyaçlarınıza göre farklı olabilir, kütüphane parçaları veya yolları kullanarak 3 tip SVG yani bir SVG Resmi sunar:

import qrcode
import qrcode.image.svg

# hangi üretim yönteminin kullanılacağını seçmek için bir yöntem tanımlayın
# Seçim yapabileceğiniz methotlar 'basic' 'fragment' 'path'
method = "basic"

data = "karekodda yer alacak veriler. https://jn7.net"

if method == 'basic':
    # Basit üretim, sadece bir dizi rekt.
    factory = qrcode.image.svg.SvgImage
elif method == 'fragment':
    # Fragment factory (also just a set of rects)
    factory = qrcode.image.svg.SvgFragmentImage
elif method == 'path':
    # Combined path factory, fixes white space that may occur when zooming
    factory = qrcode.image.svg.SvgPathImage

# QrCode verilerini saklama
img = qrcode.make(data, image_factory = factory)

# SVG dosyasını istediğiniz isimle kaydedebilirsiniz.
img.save("qrcode.svg")

 

Bu kod ile de kolaylıkla SVG formatında karekod (QR code) oluşturabilirsiniz.

Bir sonraki yazımız da python ve OpenCV kullanarak QR kodları tanımlama ve içindeki bilgileri okuma işleminin nasıl yapılacağını anlatacağız.

Python programlama dilini öğrenemek isterseniz sitemizdeki Python derslerini takip edebilir, kendinizi geliştirmek içinde sitemizdeki 100 algoritma sorusunu konusunu inceleyebilirsiniz.

Yorumlarınızı bekliyoruz.

 

karekodopenCVprogramlamapythonpython örnek kodlarıqr code
Comments (3)
Add Comment
  • Ahmet

    Merhaba.
    Bu oluşan qr sabit kalarak eklediğimiz içeriği örnegin link vb. nasıl değiştirebiliriz. Bugun qr a google.com adresi ekledim oluşturdum fakat 1 ay sonra aynı qr a youtube linki eklemek istiyorum… gibi

    • Halil İbrahim K.

      Barkod içeriğe göre oluşturulduğunda değişiklik yapamazsınız. Yeni link için yeni barkod oluşturmanız gerekir. Ancak kod içinde google.com okuyunca youtube llinkine git gibi yönlendirme yapabilirsiniz.