Bu meydan okuma sayfasında sadece bir fotoğraf görüyoruz. Meydan okumalar gitgide zorlaşıyor. Bu fotoğrafın üzerinde gri bir alan var. Görünüşe göre fotoğraf işleme ile ilgili modüller kullanmamız gerekiyor.
pip3 install pillowBu fotoğrafı sayfadan indirip modülümüzdeki metotlar yardımıyla açalım.
from io import BytesIO
from PIL import Image
im = Image.open('oxygen.png')Gri şerit fotoğrafın tam ortasında bulunuyor. Bu nedenle bu bölüme ulaşmak için piksellerin orta satırına ulaşmamız gerekiyor.
from io import BytesIO
from PIL import Image
im = Image.open('C:/Users/Osman Yasir/Desktop/ys/oxygen.png')
serit = list()
for i in range(im.width):
serit.append(im.getpixel((i, im.height / 2)))Yukarıdaki kodda serit dizisini ekrana bastığımızda tekrarlanan demetler göreceksiniz. Her demetten 7 tane olduğu için bunlardan yalnızca bir tanesini kullanmak için:
serit = serit[::7]Bu dizideki demetlerdeki elemanlar sırasıyla RGB renk sistemindeki r, g, b ve alpha değerlerini temsil ediyor. Bu satırın bir kısmı gri şerit iken son bölümde gri olmayan pikseller bulunmakta. Bu bağlamda yalnızca gri olanları alalım. RGB renk sisteminde gri renklerin r, g ve b değerleri eşittir. Bu değerlerden herhangi birini alıp bir diziye aktaralım.
from io import BytesIO
from PIL import Image
im = Image.open('C:/Users/Osman Yasir/Desktop/ys/oxygen.png')
serit = list()
for i in range(im.width):
serit.append(im.getpixel((i, im.height / 2)))
serit = serit[::7]
n = list()
for r, g, b, a in serit:
if r == g == b:
n.append(r)Elimizde [0, 255] aralığındaki sayılardan oluşan bir dizi var. Bu sayıları ASCII karakterlerine çevirelim. Bunun için chr() fonksiyonunu kullanacağız. Bu fonksiyonu dizideki her bir elemana uygulayıp tekrar diziye aktarmak için ise map() fonksiyonunu kullanalım.
m = map(chr, n)En son elde ettiğimiz dizideki her bir elemanı yan yana ekrana bastırdığımızda aşağıdaki çıktıyı elde ediyoruz.
smart guy, you made it. the next level is [105, 110, 116, 101, 103, 114, 105, 116, 121]
Verilen dizideki her bir karakter için aynı işlemi uygularsak sonraki bölümün ismine ulaşacağız. Kodumuz son olarak şöyle olur:
dizi = [105, 110, 116, 101, 103, 114, 105, 116, 121]
yazi = map(chr, dizi)
for i in yazi:
print(i, end='')Sonraki meydan okuma: (integrity.html)