Metin girdisi alınarak, her harfin ASCII koduna göre belirlenen renklerle oluşturulan bir kareler kümesi oluşturmak. Bu sayede metni şifrelemek ve anlamsız gibi görülen kare kümelerinde metin saklamak.
- Python 3.10.8
- Pillow (Python Imaging Library)
- Kullanıcıdan metin girdisi alınır.
- Metin, harf harf ayıklanarak ASCII koduna dönüştürülür.
- Her harfin ASCII koduna karşılık geler bir renk tonu oluşturulur. Bu renk tonu HSL renk modeli kullanılarak hesaplanır.
- Her harf için bir kare oluşturulur ve karenin o rengi, o harfin ASCII koduna karşılık gelen renk tonuna göre belirlenir.
- Kareler, yan yana şekilde sıralanır.
Harflerin her biri ASCII koduna dönüşüyor ve bize sayısal bir değer veriyor. Mesela "E" harfini ele alalım. "E" harfinin ASCII kodu 69'dur. Bu kodu matematiksel işleme tabii tutuyorum ve ASCII kodunu HSL renk sistemini kullandım. Çünkü HSL renk sisteminde sadece Hue (ton) ayarı yaparak farklı renkler üretebiliyorum. HSL renk sistemi hakkında bilgi için tıklayın.
Şimdi asıl problem ASCII aralığımı 0-360 arasına dağıtmaktı. Bunun için araştırma yaptım ve lineer dönüşüm ile karşılaştım. Lineer dönüşümü kullanarak 48-90 arasındaki ASCII kodlarını 0-360 arasına dağıttım.
Lightness (parlaklık) ve Saturation (doygunluk) değerlerini sabit tutarak, Hue (ton) değerini değiştirerek farklı renkler üretiyorum.
Hue için aşağıdaki matematik işlemini(lineer dönüşüm) kullanıyorum:
hsl(hue, 100%, 50%)
sonrasında bu kodla gelen renklerle kareleri dolduruyorum.\
Çözümlemek için ise fonksiyonun tersini aldım.
- Python ve Pillow kütüphanesi kurulduğuna emin olun.
pip install -r requirements.txt
- Projeyi bilgisayarınıza indirin.
git clone https://github.com/emrekayik/EKODE.git
-
Terminali açın ve proje dizininize gidin.
-
Aşağıdaki komut ile çalıştırarak projeyi deneyin:
python main.py
- Program başladıktan sonra "output.png" adlı bir resim dosyası oluşturulur.
- Tüm ASCII karakterleri için çalışmasını sağlamak
- Nesne tabanlı yazmak
- Çıktı metnini birleştirmek