Renk Al

Yazan : Ömer Ücel - Tarih : June 17, 2008 - 11:06 am - Etiketler :

Ş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()
 

« « 120+2
Okul » »
Çalışmalarımda kullandığım programlar, siteler, teknolojiler vs.

Resimler Renkler Gimp PHP Python wxPython Geany Swish Max 2 jQuery

Günlük WordPress tabanlıdır.
Kapat



Bilmiyorum  Ben alacağım/aldım  Bu iÅŸi size bırakıyorum  Evet  Hayır


Kapat