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&lt;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&lt;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:

Leave a Reply