2010-03-23 9 views
9

मैं एक छवि लोड करना चाहता हूं, इसे किसी दिए गए आकार में आकार देना चाहता हूं और इसे पैनल में किसी विशिष्ट स्थिति में खींचने के बाद।wxpython का उपयोग करके छवि का आकार बदलने और खींचने के लिए कैसे?

यह सब wxpython का उपयोग कर।

मैं यह कैसे कर सकता हूं?

अग्रिम धन्यवाद!

+0

धन्यवाद दोस्तों, मैं इसे बाद में कोशिश करते हैं और 'स्वीकार किए जाते हैं जवाब' –

उत्तर

24

wx.Image में Scale विधि है जो आकार बदलती है। शेष सामान्य डब्ल्यूएक्स कोडिंग है।

यहां आपके लिए एक संपूर्ण उदाहरण है। (आमतौर पर केवल बिटमैप अनुमति)

import wx 

def scale_bitmap(bitmap, width, height): 
    image = wx.ImageFromBitmap(bitmap) 
    image = image.Scale(width, height, wx.IMAGE_QUALITY_HIGH) 
    result = wx.BitmapFromImage(image) 
    return result 

class Panel(wx.Panel): 
    def __init__(self, parent, path): 
     super(Panel, self).__init__(parent, -1) 
     bitmap = wx.Bitmap(path) 
     bitmap = scale_bitmap(bitmap, 300, 200) 
     control = wx.StaticBitmap(self, -1, bitmap) 
     control.SetPosition((10, 10)) 

if __name__ == '__main__': 
    app = wx.PySimpleApp() 
    frame = wx.Frame(None, -1, 'Scaled Image') 
    panel = Panel(frame, 'input.jpg') 
    frame.Show() 
    app.MainLoop() 
+0

क्या छवि पर ऑनक्लिक ईवेंट करना संभव है? –

+1

हाँ, बस StaticBitmap नियंत्रण पर EVT_LEFT_DOWN बाध्य करें। – FogleBird

+0

यह काम किया। धन्यवाद एम 8 :) –

0

सबसे पहले मैं wxPython डॉक्स और प्रदर्शन कैसे मक्खी पर अपने पुस्तकालयों का उपयोग करने के लिए, विशेष रूप से, क्योंकि डेमो के साथ खेला जा सकता है असर देखने के लिए या आप मूल करने के लिए वापस कर सकते हैं समझा एक महान काम करने लगता है।

def runTest(frame, nb, log): 
    bmp = wx.Image(opj('bitmaps/image.bmp'), wx.BITMAP_TYPE_BMP).ConvertToBitmap() 
    gif = wx.Image(opj('bitmaps/image.gif'), wx.BITMAP_TYPE_GIF).ConvertToBitmap() 
    png = wx.Image(opj('bitmaps/image.png'), wx.BITMAP_TYPE_PNG).ConvertToBitmap() 
    jpg = wx.Image(opj('bitmaps/image.jpg'), wx.BITMAP_TYPE_JPEG).ConvertToBitmap() 

    panel = wx.Panel(nb, -1) 

    pos = 10 
    wx.StaticBitmap(panel, -1, bmp, (10, pos), (bmp.GetWidth(), bmp.GetHeight())) 

    pos = pos + bmp.GetHeight() + 10 
    wx.StaticBitmap(panel, -1, gif, (10, pos), (gif.GetWidth(), gif.GetHeight())) 

    pos = pos + gif.GetHeight() + 10 
    wx.StaticBitmap(panel, -1, png, (10, pos), (png.GetWidth(), png.GetHeight())) 

    pos = pos + png.GetHeight() + 10 
    wx.StaticBitmap(panel, -1, jpg, (10, pos), (jpg.GetWidth(), jpg.GetHeight())) 

    return panel 

यहाँ यह एक छवि लोड करने के लिए कैसे पता चलता है और यह प्रदर्शित करता है:

http://www.wxpython.org/download.php#binaries

जिसके अनुसार, यहाँ डेमो से उदाहरण कोड है: यहाँ सभी फ़ाइलों को डाउनलोड करने के लिए Windows कड़ी है एक पैनल पर यहां कुछ वस्तुएं नहीं समझाई गई हैं, लेकिन यह आपको सामान्य गलती देनी चाहिए।

+0

यही नहीं देंगे किसी भी छवि का आकार बदलें। यह सिर्फ एक आकार गुजरता है जिसे छोड़ दिया जा सकता है। – FogleBird

+0

आह, हाँ आप सही हैं, जो आपको छवि की एक विशिष्ट ऊंचाई और चौड़ाई सेट करने की अनुमति देता है, जैसा प्रदर्शित होता है, छवि का आकार बदलता नहीं है। उत्तर अपडेट किया गया :) – Fry

1

आप एक उपकरण पट्टी/listbook/Toolbook आदि करने के लिए छवि को जोड़ने मतलब तो .. आप इसे एक बिटमैप कन्वर्ट करने के लिए होगा।

जहां तक ​​मुझे पता है कि आप बिटमैप को फिर से आकार नहीं दे सकते हैं, इसलिए आपको पहले एक छवि का आकार बदलना होगा और फिर इसे परिवर्तित करना होगा।

यहाँ एक अच्छा उदाहरण है http://markandclick.com/1/post/2011/12/wxpython-resize-embedded-bitmap-before-adding-it-as-a-tool.html

यहाँ उदाहरण से एक प्रति है:

def getFolderBitmap(): 
    img = folder_icon.GetImage().Rescale(scaleW, scaleH) 
    return img.ConvertToBitmap() 
संबंधित मुद्दे