# devil  http://www.myevan.net/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-devil-%EB%AA%A8%EB%93%88
import
wx

from devil import *
from ctypes import c_ubyte, string_at

class DDSHandler(wx.PyImageHandler):
    def __init__(self, *args, **kwargs):
        wx.PyImageHandler.__init__(self)

        self.SetName("DDS Image")
        self.SetExtension("dds")
        self.SetType(wx.BITMAP_TYPE_ANI + 1)
        self.SetMimeType("image/x-dds")

    def GetImageCount(self):
        return 1

    def LoadFile(self, image, stream, verbose, index):
        data = stream.read()

        if not ilLoadL(IL_TYPE_UNKNOWN, data, len(data)):
            return False

        ilConvertImage(IL_BGR, IL_UNSIGNED_BYTE)

        image_width = ilGetInteger(IL_IMAGE_WIDTH)
        image_height = ilGetInteger(IL_IMAGE_HEIGHT)
        image_data = string_at(ilGetData(), image_width * image_height * 3)

        image.Destroy()
        image.Create(image_width, image_height)
        image.SetData(image_data)

        return True

    def SaveFile(self, image, stream, verbose):
        raise NotImplementedError

    def DoCanRead(self, stream):
        return True

wx.Image.AddHandler(DDSHandler())

class TestFrame(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, -1, title, pos=(0, 0), size=(320, 240))
        self.CentreOnScreen(wx.BOTH)

        self.bmp = wx.BitmapFromImage(wx.Image("test.dds"))
        self.Bind(wx.EVT_PAINT, self.__OnPaint)

    def __OnPaint(self, event):
        dc = wx.PaintDC(self)
        dc.DrawBitmap(self.bmp, 10, 10, True)

class TestApp(wx.App):
    def OnInit(self):
        "OnInit"
        frame = TestFrame(None, "TestApp")
        frame.Show()
        self.SetTopWindow(frame)
        return True

    def OnExit(self):
        "OnExit"
        pass

TestApp(redirect=False).MainLoop()

참고자료:
http://www.bitpim.org/pyxr/c/projects/bitpim/src/brewcompressedimage.py.html

이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/05/14 19:32 2007/05/14 19:32

wx파이썬 이미지 만들기

Posted at 2007/05/03 13:55// Posted in wxPython/wxImage
import wx
import struct

class TestFrame(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, -1, title, pos=(0, 0), size=(320, 240))
        self.CentreOnScreen(wx.BOTH)


        img_width = 128
        img_height = 64

        lineList = []
        for i in xrange(img_height):
            p = 255 * i / img_height
            lineList.append(struct.pack("=BBB", p, p, p) * img_width)

        img = wx.ImageFromData(img_width, img_height, "".join(lineList))

        self.bmp = wx.BitmapFromImage(img)
        self.Bind(wx.EVT_PAINT, self.__OnPaint)

    def __OnPaint(self, event):
        dc = wx.PaintDC(self)
        dc.DrawBitmap(self.bmp, 50, 10, True)

class TestApp(wx.App):
    def OnInit(self):
        "OnInit"
        frame = TestFrame(None, "TestApp")
        frame.Show()
        self.SetTopWindow(frame)
        return True

    def OnExit(self):
        "OnExit"
        pass

TestApp(redirect=False).MainLoop()
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/05/03 13:55 2007/05/03 13:55

wx파이썬 이미지 불러오기

Posted at 2007/05/03 12:32// Posted in wxPython/wxImage
import wx

class TestFrame(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, -1, title, pos=(0, 0), size=(320, 240))
        self.CentreOnScreen(wx.BOTH)

        self.bmp = wx.BitmapFromImage(wx.Image("test.bmp"))
        self.Bind(wx.EVT_PAINT, self.__OnPaint)

    def __OnPaint(self, event):
        dc = wx.PaintDC(self)
        dc.DrawBitmap(self.bmp, 50, 10, True)

class TestApp(wx.App):
    def OnInit(self):
        "OnInit"
        frame = TestFrame(None, "TestApp")
        frame.Show()
        self.SetTopWindow(frame)
        return True

    def OnExit(self):
        "OnExit"
        pass

TestApp(redirect=False).MainLoop()
이올린에 북마크하기(0) 이올린에 추천하기(0)
2007/05/03 12:32 2007/05/03 12:32