PIL ve Renk Paletleri
Bir kaç işi hallettikten sonra dinlenmek için Python'la uğraşırken PIL modülü ile resimdeki renkleri alan bir uygulama yapmaya çalıştım. Sonucunda da başardım. Bazı sorunlar olsa da sistem çalışıyor. Kodlar ve bir örneğin sonucu aşağıda.
Kodlardaki if adet<1: kısmı if adet<1: şeklinde olmalı. Malesef kod renklendirme eklentisindeki sorundan dolayı böyle görüntüleniyor. Ayrıca adet değişkeni bir resimden alınacak olan renk sayısını belirliyor. Ben burada 5 yaptım.
Kodlar:
import os import Image class RenkPaleti: def __init__(self,adet,resim_yol): if adet<1: adet=1 self.renkler = [] self.resim_renkler = [] if os.path.isfile(resim_yol)==True: resim = Image.open(resim_yol) resim_kopya = resim.quantize(adet).convert("RGB") self.resim_renkler = resim_kopya.getcolors(maxcolors=resim.size[0]*resim.size[1]) def renk(self,tur): for i in self.resim_renkler: if tur=='hex': self.renkler.append(self.rgbdenhexe(i[1][0],i[1][1],i[1][2])) elif tur=='rgb': self.renkler.append((i[1][0],i[1][1],i[1][2])) return self.renkler def rgbdenhexe(self,R,G,B): return "#%02x%02x%02x" %(R,G,B) adet = 5 resimler = ["test1.jpg","test2.jpg","test3.jpg","test4.jpg"] for resim in resimler: print RenkPaleti(adet,resim).renk('hex')
omer@pardus gelistirme $ python2.4 test2.py ['#949e89', '#6a808f', '#3e5787', '#c1c18c', '#b1af64'] ['#9c8781', '#edf2f8', '#f0f1f6', '#ebecf2', '#d9dae0'] ['#9dc3dd', '#6d7479', '#21354b', '#6797c4', '#2a72c2'] ['#ffffff', '#fbffff', '#fcfef9', '#f9e6e4', '#d4635e']
test3.jpg ile yapılan deneme sonuçları:


Tags: python