945,066 Members | Top Members by Rank

Ad:
  • Python Code Snippet
  • Views: 25745
  • Python RSS
0

wxPython GUI to Display a JPEG (.jpg) Image

by on Jul 24th, 2005
Jumping through a few extra hoops allows you to display the common image format jpeg on a panel of the wxPython GUI window. All you need to do is to read in the image file as a binary, convert to a byte stream image and then to a bitmap. Now you can display the bitmap. An updated simpler way without the stream is also shown.
Python Code Snippet (Toggle Plain Text)
  1. # show a jpeg (.jpg) image using wxPython, newer coding style
  2. # two different ways to load and display are given
  3. # tested with Python24 and wxPython25 vegaseat 24jul2005
  4.  
  5. import wx
  6. import cStringIO
  7.  
  8. class Panel1(wx.Panel):
  9. """ class Panel1 creates a panel with an image on it, inherits wx.Panel """
  10. def __init__(self, parent, id):
  11. # create the panel
  12. wx.Panel.__init__(self, parent, id)
  13. try:
  14. # pick a .jpg file you have in the working folder
  15. imageFile = 'Moo.jpg'
  16. data = open(imageFile, "rb").read()
  17. # convert to a data stream
  18. stream = cStringIO.StringIO(data)
  19. # convert to a bitmap
  20. bmp = wx.BitmapFromImage( wx.ImageFromStream( stream ))
  21. # show the bitmap, (5, 5) are upper left corner coordinates
  22. wx.StaticBitmap(self, -1, bmp, (5, 5))
  23.  
  24. # alternate (simpler) way to load and display a jpg image from a file
  25. # actually you can load .jpg .png .bmp or .gif files
  26. jpg1 = wx.Image(imageFile, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
  27. # bitmap upper left corner is in the position tuple (x, y) = (5, 5)
  28. wx.StaticBitmap(self, -1, jpg1, (10 + jpg1.GetWidth(), 5), (jpg1.GetWidth(), jpg1.GetHeight()))
  29. except IOError:
  30. print "Image file %s not found" % imageFile
  31. raise SystemExit
  32.  
  33.  
  34. app = wx.PySimpleApp()
  35. # create a window/frame, no parent, -1 is default ID
  36. # increase the size of the frame for larger images
  37. frame1 = wx.Frame(None, -1, "An image on a panel", size = (400, 300))
  38. # call the derived class
  39. Panel1(frame1,-1)
  40. frame1.Show(1)
  41. app.MainLoop()
Comments on this Code Snippet
Jul 25th, 2005
0

Re: wxPython GUI to Display a JPEG (.jpg) Image

Adopted the newer wxPython coding style, which identifies the namespace wx.
DaniWeb's Hypocrite
vegaseat is offline Offline
5,792 posts
since Oct 2004
Nov 11th, 2007
0

Re: wxPython GUI to Display a JPEG (.jpg) Image

Hello,
let me just say that I found you example very useful. I've tried to make a simple slideshow program from it, but I'm stuck, because I can't make the picture change in the created Panel. I would appreciate any help. Thank you.
Newbie Poster
feci1024 is offline Offline
1 posts
since Nov 2007
Sep 9th, 2008
0

Re: wxPython GUI to Display a JPEG (.jpg) Image

When iI supply the name of another file in filebname="NEWONE.JPG" the display does not change ...
Newbie Poster
Erik Vandamme is offline Offline
2 posts
since Mar 2008
Sep 9th, 2008
0

Re: wxPython GUI to Display a JPEG (.jpg) Image

When I try to integrate this into wxPython (windows XP) see code below.
It actually use the windows fax and picture viewer, so I obviously need to somehow fix the image to the frame/panel??
# show a jpeg (.jpg) image using wxPython, newer coding style
# two different ways to load and display are given
# tested with Python24 and wxPython25 vegaseat 24jul2005

import wx
import Image
import cStringIO


class Panel1(wx.Panel):
""" class Panel1 creates a panel with an image on it, inherits wx.Panel """
def __init__(self, parent, id):
# create the panel
wx.Panel.__init__(self, parent, id)
try:
# pick a .jpg file you have in the working folder
imageFile = 'c:\eTemp\dThumb.jpg'
im1 = Image.open(imageFile)
im1.show()
## data = open(imageFile, "rb").read()
## # convert to a data stream
## stream = cStringIO.StringIO(data)
## # convert to a bitmap
## bmp = wx.BitmapFromImage( wx.ImageFromStream( stream ))
## # show the bitmap, (5, 5) are upper left corner coordinates
## wx.StaticBitmap(self, -1, bmp, (5, 5))

# alternate (simpler) way to load and display a jpg image from a file
# actually you can load .jpg .png .bmp or .gif files
print "next\n"
imageFile = 'c:\eTemp\TOPUPDOWN.jpg'
im1 = Image.open(imageFile)
im1.show()

jpg1 = wx.Image(imageFile, wx.BITMAP_TYPE_ANY).ConvertToBitmap()
# bitmap upper left corner is in the position tuple (x, y) = (5, 5)
wx.StaticBitmap(self, -1, jpg1, (10 + jpg1.GetWidth(), 5), (jpg1.GetWidth(), jpg1.GetHeight()))
except IOError:
print "Image file %s not found" % imageFile
raise SystemExit


app = wx.PySimpleApp()
# create a window/frame, no parent, -1 is default ID
# increase the size of the frame for larger images
frame1 = wx.Frame(None, -1, "An image on a panel", size = (400, 300))
# call the derived class
Panel1(frame1,-1)
frame1.Show(1)
app.MainLoop()
Newbie Poster
Erik Vandamme is offline Offline
2 posts
since Mar 2008
Message:
Previous Thread in Python Forum Timeline: wxPython Bitmap Button
Next Thread in Python Forum Timeline: Error with comparation





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC