Şuradaki sınıfı kullanarak görsel bir program yaptım. Biraz daha özellik eklenebilir ilerleyen vakitlerde. Kodlara aşağıdan ve buradan erişebilirsiniz.
#-*- coding: utf-8 -*- import wx import os import Image import cStringIO 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) class HtmlList(wx.HtmlListBox): def OnGetItem(self,eleman): renk_kodlari = self.__doc__ veri = " <table width=100% cellspacing=10 cellpadding=10>" veri = veri + " <tr>" veri = veri + " <td>" + renk_kodlari[eleman] + "</td> " veri = veri + " <td width=60% bgcolor=" + renk_kodlari[eleman] + "></td> " veri = veri + "</tr> " veri = veri + "</table> " return veri class MainFrame(wx.Frame): def __init__(self,parent,id,title,pos=wx.DefaultPosition,size=(600,400),style= wx.CAPTION | wx.SYSTEM_MENU | wx.MINIMIZE_BOX | wx.CLOSE_BOX): wx.Frame.__init__(self,parent,id,title,pos,size,style) self.renk_kodlari = [] self.panel = wx.Panel(self) self.tasiyici = wx.BoxSizer(wx.VERTICAL) kutu = wx.BoxSizer(wx.HORIZONTAL) self.tasiyici.Add(kutu,0,wx.ALL,5) buton = wx.Button(self.panel,-1,u"Resim Aç") buton.Bind(wx.EVT_BUTTON,self.ResimAc) self.resim = wx.StaticText(self.panel,-1,"") kutu.Add(buton,0,wx.ALL,5) kutu.Add(self.resim,1,wx.ALL,5) kutu = wx.BoxSizer(wx.HORIZONTAL) self.tasiyici.Add(kutu,1,wx.EXPAND | wx.ALL,5) self.bitmap = wx.StaticBitmap(self.panel) kutu.Add(self.bitmap,1,wx.EXPAND | wx.ALL,5) self.renkler = HtmlList(self.panel,-1,style=wx.BORDER_SUNKEN) kutu.Add(self.renkler,1,wx.EXPAND | wx.ALL,5) self.panel.SetSizer(self.tasiyici) self.Center() def ResimAc(self,olay): diyalog = wx.FileDialog(self,message=u"Resim seç",defaultDir=os.getcwd(),defaultFile="",style=wx.OPEN | wx.CHANGE_DIR) if diyalog.ShowModal()==wx.ID_OK: self.resim.SetLabel(diyalog.GetPaths()[0]) self.renk_kodlari = RenkPaleti(5,diyalog.GetPaths()[0]).renk('hex') self.renkler.__doc__ = self.renk_kodlari self.renkler.SetItemCount(len(self.renk_kodlari)) self.bitmap.SetFocus() data = open(diyalog.GetPaths()[0], "rb").read() stream = cStringIO.StringIO(data) img = wx.ImageFromStream( stream ) img.Rescale(280, ((img.Height*280)/img.Width)) bmp = wx.BitmapFromImage( img ) self.bitmap.SetBitmap(bmp) self.Refresh() diyalog.Destroy() class Main(wx.App): def OnInit(self): frame = MainFrame(None,-1,u"Renk Al") frame.Show(True) self.SetTopWindow(frame) return True if __name__=="__main__": app = Main(0) app.MainLoop()