Konuyu Açan
#0
Merhaba arkadaşlar,
Bugün hepimizin günlük hayatta sıkça karşılaştığı, bazen bir menüye ulaşmak için tarattığımız, bazen bir web sitesine hızlıca gitmek için kullandığımız o küçük, kare kodlardan, yani QR kodlardan bahsedeceğiz. Peki hiç düşündünüz mü, bu sihirli kareleri kendi ellerimizle, üstelik Python gibi harika bir dil kullanarak nasıl oluşturabiliriz? Emin olun, sandığınızdan çok daha kolay ve bir o kadar da eğlenceli. Özellikle markalaşma, otomasyon veya sadece kişisel projeleriniz için kendi QR kodlarınızı tasarlamak isterseniz, doğru yerdesiniz.
Neden QR Kod ve Neden Python?
QR kodlar, biliyorsunuz, "Quick Response" yani "Hızlı Yanıt" kelimelerinin kısaltması. İçlerinde metin, URL, telefon numarası, e-posta adresi, Wi-Fi bilgileri gibi pek çok farklı türde veriyi saklayabiliyorlar. Akıllı telefonlarımızla saniyeler içinde tarayıp bu verilere anında erişebiliyoruz. Bu, özellikle fiziksel dünyayı dijital dünyaya bağlamak istediğimizde paha biçilmez bir köprü vazifesi görüyor. Bir ürünün ambalajına koyduğunuz bir QR kod, müşterinizi anında ürünün web sayfasına, bir etkinliğin biletindeki QR kod, katılımcıyı kayıt formuna veya haritaya yönlendirebilir. İmkanlar gerçekten sınırsız.
Peki neden Python? Çünkü Python, bu tür görevler için adeta biçilmiş kaftan. Geniş kütüphane ekosistemi sayesinde karmaşık görünen birçok işlevi birkaç satır kodla halledebiliyorsunuz. QR kod oluşturma da bunlardan biri. Kullanacağımız qrcode kütüphanesi, işimizi inanılmaz derecede kolaylaştıracak, bize sadece ne istediğimizi söylemek kalacak. Hem hızlı, hem esnek, hem de çok anlaşılır. Hadi o zaman, kolları sıvayalım mı?
Başlangıç: qrcode Kütüphanesini Kurulumu
Her güzel projenin bir başlangıcı vardır, bizimki de kütüphane kurulumuyla başlıyor. Python'ın paket yöneticisi pip ile bu işi saniyeler içinde halledebiliriz. Komut istemcinizi veya terminalinizi açın ve şu komutu yazın:
Burada gördüğünüz "[pil]" kısmı önemli. qrcode kütüphanesi, QR kodları görsel olarak oluşturmak ve kaydetmek için genellikle Pillow (Python Imaging Library) kütüphanesine ihtiyaç duyar. Bu komut, qrcode ile birlikte Pillow'u da otomatik olarak kurarak bize zaman kazandırır. Kurulum tamamlandığında, artık kod yazmaya hazırsınız demektir.
İlk QR Kodumuzu Oluşturma: Temel Kullanım
Şimdi, en basit haliyle bir QR kod oluşturalım. Amacımız, içine "Merhaba Dünya!" yazan bir QR kod yapmak ve bunu bir PNG dosyası olarak kaydetmek. İşte kodumuz:
Gördüğünüz gibi, sadece birkaç satır. qrcode.make() fonksiyonu işin büyük bir kısmını hallediyor. İçine verdiğiniz metni alıyor, bir QR koduna dönüştürüyor ve size bir resim nesnesi döndürüyor. Ardından da bu nesnenin .save() metodunu kullanarak istediğimiz isimde bir PNG dosyası olarak kaydediyoruz. Bu kadar basit! Artık "ilk_qr_kodum.png" dosyasını açıp telefonunuzla tarayabilir ve "Merhaba Dünya! Bu benim ilk QR kodum." yazısını görebilirsiniz.
QR Kodları Özelleştirme: Boyut, Renk ve Kenar Boşlukları
Basit bir QR kod oluşturmak güzel, ama genellikle daha fazla kontrol isteriz, değil mi? QR kodun boyutunu, rengini, kenar boşluklarını ayarlamak isteyebiliriz. qrcode kütüphanesi, QRCode sınıfı aracılığıyla bize bu imkanı sunuyor.
Burada birkaç yeni parametre görüyoruz:
Hata Düzeltme Seviyeleri: Kodunuz Ne Kadar Sağlam Olmalı?
Az önce bahsettiğimiz hata düzeltme seviyeleri gerçekten önemli bir konu. Bir QR kodunun üzerine kahve döküldüğünde, bir kısmı yırtıldığında veya bir logo eklendiğinde bile okunabilir kalmasını sağlayan şey bu. Dört temel seviye var:
QR Koda Logo Ekleme: Markalaşma Dokunuşu
QR kodunuzu daha çekici hale getirmenin ve markanızla özdeşleştirmenin harika bir yolu, ortasına bir logo eklemektir. Bu biraz daha gelişmiş bir kullanım, ama Pillow kütüphanesi sayesinde hiç de zor değil.
[code]
import qrcode
from PIL import Image
QR kodun içine yerleştireceğimiz veri
data = "https://www.senin-sirketinin-sitesi.com"
logo_path = "logo.png" # Logomuzun dosya yolu
output_path = "logolu_qr_kod.png"
Hata düzeltme seviyesini H olarak ayarla ki logo için yer açılsın
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H, # Yüksek hata düzeltme önemli!
box_size=10,
border=4,
)
qr.add_data(data)
qr.make(fit=True)
QR kodu görsel olarak oluştur (şimdilik logosuz)
img = qr.make_image(fill_color="black", back_color="white").convert("RGB")
Logoyu aç
logo = Image.open(logo_path)
QR kodun boyutunu al
qr_width, qr_height = img.size
Logonun QR kodun yüzde kaçını kaplayacağını belirle (örneğin %20)
logo_size_ratio = 0.20
logo_width = int(qr_width * logo_size_ratio)
logo_height = int(qr_height * logo_size_ratio)
Logoyu yeniden boyutlandır
logo = logo.resize((logo_width, logo_height), Image.LANCZOS) # LANCZOS daha iyi kalite verir
Logonun QR kodun ortasına gelmesi için pozisyon hesapla
pos_x = (qr_width - logo_width) // 2
pos_y = (qr_height - logo_height) // 2
#
Bugün hepimizin günlük hayatta sıkça karşılaştığı, bazen bir menüye ulaşmak için tarattığımız, bazen bir web sitesine hızlıca gitmek için kullandığımız o küçük, kare kodlardan, yani QR kodlardan bahsedeceğiz. Peki hiç düşündünüz mü, bu sihirli kareleri kendi ellerimizle, üstelik Python gibi harika bir dil kullanarak nasıl oluşturabiliriz? Emin olun, sandığınızdan çok daha kolay ve bir o kadar da eğlenceli. Özellikle markalaşma, otomasyon veya sadece kişisel projeleriniz için kendi QR kodlarınızı tasarlamak isterseniz, doğru yerdesiniz.
Neden QR Kod ve Neden Python?
QR kodlar, biliyorsunuz, "Quick Response" yani "Hızlı Yanıt" kelimelerinin kısaltması. İçlerinde metin, URL, telefon numarası, e-posta adresi, Wi-Fi bilgileri gibi pek çok farklı türde veriyi saklayabiliyorlar. Akıllı telefonlarımızla saniyeler içinde tarayıp bu verilere anında erişebiliyoruz. Bu, özellikle fiziksel dünyayı dijital dünyaya bağlamak istediğimizde paha biçilmez bir köprü vazifesi görüyor. Bir ürünün ambalajına koyduğunuz bir QR kod, müşterinizi anında ürünün web sayfasına, bir etkinliğin biletindeki QR kod, katılımcıyı kayıt formuna veya haritaya yönlendirebilir. İmkanlar gerçekten sınırsız.
Peki neden Python? Çünkü Python, bu tür görevler için adeta biçilmiş kaftan. Geniş kütüphane ekosistemi sayesinde karmaşık görünen birçok işlevi birkaç satır kodla halledebiliyorsunuz. QR kod oluşturma da bunlardan biri. Kullanacağımız qrcode kütüphanesi, işimizi inanılmaz derecede kolaylaştıracak, bize sadece ne istediğimizi söylemek kalacak. Hem hızlı, hem esnek, hem de çok anlaşılır. Hadi o zaman, kolları sıvayalım mı?
Başlangıç: qrcode Kütüphanesini Kurulumu
Her güzel projenin bir başlangıcı vardır, bizimki de kütüphane kurulumuyla başlıyor. Python'ın paket yöneticisi pip ile bu işi saniyeler içinde halledebiliriz. Komut istemcinizi veya terminalinizi açın ve şu komutu yazın:
CODE
12
pip install qrcode[pil]
Burada gördüğünüz "[pil]" kısmı önemli. qrcode kütüphanesi, QR kodları görsel olarak oluşturmak ve kaydetmek için genellikle Pillow (Python Imaging Library) kütüphanesine ihtiyaç duyar. Bu komut, qrcode ile birlikte Pillow'u da otomatik olarak kurarak bize zaman kazandırır. Kurulum tamamlandığında, artık kod yazmaya hazırsınız demektir.
İlk QR Kodumuzu Oluşturma: Temel Kullanım
Şimdi, en basit haliyle bir QR kod oluşturalım. Amacımız, içine "Merhaba Dünya!" yazan bir QR kod yapmak ve bunu bir PNG dosyası olarak kaydetmek. İşte kodumuz:
CODE
12345678910111213
import qrcode
[b]QR kodun içine yerleştireceğimiz veri[/b]
data = "Merhaba Dünya! Bu benim ilk QR kodum."
[b]QR kod nesnesini oluştur[/b]
img = qrcode.make(data)
[b]Oluşturulan QR kodu bir dosyaya kaydet[/b]
img.save("ilk_qr_kodum.png")
print("İlk QR kodunuz 'ilk_qr_kodum.png' olarak oluşturuldu!")
Gördüğünüz gibi, sadece birkaç satır. qrcode.make() fonksiyonu işin büyük bir kısmını hallediyor. İçine verdiğiniz metni alıyor, bir QR koduna dönüştürüyor ve size bir resim nesnesi döndürüyor. Ardından da bu nesnenin .save() metodunu kullanarak istediğimiz isimde bir PNG dosyası olarak kaydediyoruz. Bu kadar basit! Artık "ilk_qr_kodum.png" dosyasını açıp telefonunuzla tarayabilir ve "Merhaba Dünya! Bu benim ilk QR kodum." yazısını görebilirsiniz.
QR Kodları Özelleştirme: Boyut, Renk ve Kenar Boşlukları
Basit bir QR kod oluşturmak güzel, ama genellikle daha fazla kontrol isteriz, değil mi? QR kodun boyutunu, rengini, kenar boşluklarını ayarlamak isteyebiliriz. qrcode kütüphanesi, QRCode sınıfı aracılığıyla bize bu imkanı sunuyor.
CODE
12345678910111213141516171819202122232425
import qrcode
[b]QR kodun içine yerleştireceğimiz veri[/b]
data = "https://www.ornek-web-sitesi.com/urun/x"
[b]QRCode nesnesini daha fazla parametre ile oluştur[/b]
qr = qrcode.QRCode(
version=1, # QR kodun karmaşıklığı (1'den 40'a kadar). 1 en basiti.
error_correction=qrcode.constants.ERROR_CORRECT_L, # Hata düzeltme seviyesi
box_size=10, # Her bir "kutu" piksel boyutu
border=4, # Kenar boşluğu (modül sayısı)
)
[b]Veriyi ekle[/b]
qr.add_data(data)
qr.make(fit=True) # Veriye göre QR kodun boyutunu ayarla
[b]Resmi oluştur ve renkleri ayarla[/b]
img = qr.make_image(fill_color="darkblue", back_color="white")
[b]Oluşturulan QR kodu bir dosyaya kaydet[/b]
img.save("ozel_qr_kod.png")
print("Özel QR kodunuz 'ozel_qr_kod.png' olarak oluşturuldu!")
Burada birkaç yeni parametre görüyoruz:
- version: QR kodun versiyonunu belirler. 1 en küçük ve en basitidir, 40'a kadar çıkar. Veri miktarı arttıkça daha yüksek versiyonlar gerekir. Genellikle fit=True kullanarak kütüphanenin otomatik ayarlamasını beklemek en sağlıklısıdır.
- error_correction: Hata düzeltme seviyesi. Bu, QR kodun ne kadar hasar görse de hala okunabilir kalacağını belirler. L (Low - %7), M (Medium - %15), Q (Quartile - %25), H (High - %30) seviyeleri vardır. Daha yüksek seviye, daha fazla veri yedekliliği anlamına gelir ama kodun boyutunu da büyütür. Örneğin, üzerine logo ekleyeceğiniz veya basılacağı ortamda yıpranma riski olan kodlar için H seviyesini tercih edebilirsiniz.
- box_size: QR kod içindeki her bir küçük kare (modül) kaç piksel olsun? Bu, QR kodun genel görsel boyutunu doğrudan etkiler.
- border: QR kodun etrafındaki beyaz kenar boşluğunun kalınlığı. QR kod standartlarına göre en az 4 modül genişliğinde olmalıdır ki tarayıcılar tarafından kolayca algılanabilsin.
Hata Düzeltme Seviyeleri: Kodunuz Ne Kadar Sağlam Olmalı?
Az önce bahsettiğimiz hata düzeltme seviyeleri gerçekten önemli bir konu. Bir QR kodunun üzerine kahve döküldüğünde, bir kısmı yırtıldığında veya bir logo eklendiğinde bile okunabilir kalmasını sağlayan şey bu. Dört temel seviye var:
- ERROR_CORRECT_L: Yaklaşık %7'lik bir hata düzeltme kapasitesi sunar. Çok küçük veri kaybı riskli durumlar için yeterli olabilir.
- ERROR_CORRECT_M: Yaklaşık %15'lik bir hata düzeltme kapasitesi. Çoğu genel kullanım senaryosu için iyi bir denge sunar.
- ERROR_CORRECT_Q: Yaklaşık %25'lik bir hata düzeltme kapasitesi. Daha riskli ortamlar veya orta boyutlu logolar için uygun.
- ERROR_CORRECT_H: Yaklaşık %30'luk bir hata düzeltme kapasitesi. En yüksek hata toleransını sağlar. QR kodun ortasına büyük bir logo yerleştirecekseniz veya çok kötü basım kalitesi bekliyorsanız bu seviyeyi tercih etmelisiniz.
QR Koda Logo Ekleme: Markalaşma Dokunuşu
QR kodunuzu daha çekici hale getirmenin ve markanızla özdeşleştirmenin harika bir yolu, ortasına bir logo eklemektir. Bu biraz daha gelişmiş bir kullanım, ama Pillow kütüphanesi sayesinde hiç de zor değil.
[code]
import qrcode
from PIL import Image
QR kodun içine yerleştireceğimiz veri
data = "https://www.senin-sirketinin-sitesi.com"
logo_path = "logo.png" # Logomuzun dosya yolu
output_path = "logolu_qr_kod.png"
Hata düzeltme seviyesini H olarak ayarla ki logo için yer açılsın
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_H, # Yüksek hata düzeltme önemli!
box_size=10,
border=4,
)
qr.add_data(data)
qr.make(fit=True)
QR kodu görsel olarak oluştur (şimdilik logosuz)
img = qr.make_image(fill_color="black", back_color="white").convert("RGB")
Logoyu aç
logo = Image.open(logo_path)
QR kodun boyutunu al
qr_width, qr_height = img.size
Logonun QR kodun yüzde kaçını kaplayacağını belirle (örneğin %20)
logo_size_ratio = 0.20
logo_width = int(qr_width * logo_size_ratio)
logo_height = int(qr_height * logo_size_ratio)
Logoyu yeniden boyutlandır
logo = logo.resize((logo_width, logo_height), Image.LANCZOS) # LANCZOS daha iyi kalite verir
Logonun QR kodun ortasına gelmesi için pozisyon hesapla
pos_x = (qr_width - logo_width) // 2
pos_y = (qr_height - logo_height) // 2
#