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.
İçerik Tablosu
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.
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_correction
QR 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.
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
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.
[…] benzer olarak QRCode (karekod) oluşturma ve karekod okuma uygulamaları nasıl yapılacağını anlatan yazılarımızı da […]