Guest User

Untitled

a guest
May 24th, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.16 KB | None | 0 0
  1. class TransactionImage(wx.Window):
  2. def __init__(self, parent, fname, name):
  3. wx.Window.__init__(self, parent, name=name)
  4.  
  5. self.dc = wx.ClientDC(self)
  6.  
  7. self.load_image(fname)
  8. cursor = wx.StockCursor(wx.CURSOR_MAGNIFIER)
  9. self.SetCursor(cursor)
  10.  
  11. self.Bind(wx.EVT_SIZE, self.resize_space)
  12.  
  13.  
  14. def load_image(self, image):
  15. self.image = wx.Image(image, wx.BITMAP_TYPE_JPEG)
  16. (w, h) = self.image.GetSize()
  17. self.image_ar = w/h
  18.  
  19. def resize_space(self, size):
  20. (w, h) = self.get_best_size()
  21. self.s_image = self.image.Scale(w, h)
  22. self.bitmap = wx.BitmapFromImage(self.s_image)
  23. self.dc.DrawBitmap(self.bitmap, 0, 0, useMask=False)
  24. # how can I 'refresh this area to make it 'fit'
  25.  
  26. def get_best_size(self):
  27. (window_width, window_height) = self.GetSizeTuple()
  28. new_height = window_width / self.image_ar
  29. new_size = (window_width, new_height)
  30. return new_size
  31.  
  32. # this is required for 'real' math - derive the 'aspect ratio'
  33. from __future__ import division
  34. import wx
  35.  
  36. class TransactionImage(wx.Window):
  37. def __init__(self, parent, fname, name):
  38. wx.Window.__init__(self, parent, name=name)
  39.  
  40. self.load_image(fname)
  41. cursor = wx.StockCursor(wx.CURSOR_MAGNIFIER)
  42. self.SetCursor(cursor)
  43.  
  44. self.Bind(wx.EVT_SIZE, self.resize_space)
  45. self.Bind(wx.EVT_PAINT, self.on_paint)
  46.  
  47. def load_image(self, image):
  48. self.image = wx.Image(image, wx.BITMAP_TYPE_JPEG)
  49. (w, h) = self.image.GetSize()
  50. self.image_ar = w/h
  51. self.bitmap = wx.BitmapFromImage(self.image)
  52.  
  53. def resize_space(self, event):
  54. (w, h) = self.get_best_size()
  55. self.s_image = self.image.Scale(w, h)
  56. self.bitmap = wx.BitmapFromImage(self.s_image)
  57.  
  58. def on_paint(self, event):
  59. self.dc = wx.PaintDC(self)
  60. self.dc.DrawBitmap(self.bitmap, 0, 0, useMask=False)
  61.  
  62. def get_best_size(self):
  63. (window_width, window_height) = self.GetSizeTuple()
  64. new_height = window_width / self.image_ar
  65. new_size = (window_width, new_height)
  66. return new_size
  67.  
  68.  
  69. class OriginalTransactionImage(wx.Window):
  70. def __init__(self, parent, fname, name):
  71. wx.Window.__init__(self, parent, name=name)
  72.  
  73. self.dc = wx.ClientDC(self)
  74.  
  75. self.load_image(fname)
  76. cursor = wx.StockCursor(wx.CURSOR_MAGNIFIER)
  77. self.SetCursor(cursor)
  78.  
  79. self.Bind(wx.EVT_SIZE, self.resize_space)
  80.  
  81.  
  82. def load_image(self, image):
  83. self.image = wx.Image(image, wx.BITMAP_TYPE_JPEG)
  84. (w, h) = self.image.GetSize()
  85. self.image_ar = w/h
  86.  
  87. def resize_space(self, size):
  88. (w, h) = self.get_best_size()
  89. self.s_image = self.image.Scale(w, h)
  90. self.bitmap = wx.BitmapFromImage(self.s_image)
  91. self.dc.DrawBitmap(self.bitmap, 0, 0, useMask=False)
  92.  
  93. def get_best_size(self):
  94. (window_width, window_height) = self.GetSizeTuple()
  95. new_height = window_width / self.image_ar
  96. new_size = (window_width, new_height)
  97. return new_size
  98.  
  99.  
  100. class ImageBrowser(wx.Frame):
  101.  
  102. def __init__(self, image1, image2, parent=None, id=wx.ID_ANY,
  103. pos=wx.DefaultPosition, title='Image Browser'):
  104. size = (1500, 800)
  105. wx.Frame.__init__(self, parent, id, title, pos, size)
  106.  
  107. self.CentreOnScreen()
  108.  
  109. self.panel = wx.Panel(self, wx.ID_ANY)
  110. self.panel.SetBackgroundColour(wx.Colour(191,197,229))
  111.  
  112. self.main_sizer = wx.BoxSizer(wx.VERTICAL)
  113.  
  114. self.image_panel = wx.Panel(self.panel, wx.ID_ANY, style=wx.SIMPLE_BORDER)
  115. self.image_panel.SetBackgroundColour(wx.Colour(255, 255, 255))
  116.  
  117. self.image_sizer = wx.BoxSizer(wx.HORIZONTAL)
  118. self.image_panel.SetSizer(self.image_sizer)
  119.  
  120. self.load_image_sizer(image1, image2)
  121. self.main_sizer.Add(self.image_panel, 1, wx.GROW|wx.ALIGN_CENTER|wx.ALL, 25)
  122. self.panel.SetSizer(self.main_sizer)
  123.  
  124.  
  125. def load_image_sizer(self, image1, image2):
  126. #bitmap1 = OriginalTransactionImage(self.image_panel, image1, 'image1')
  127. #bitmap2 = OriginalTransactionImage(self.image_panel, image2, 'image2')
  128.  
  129. bitmap1 = TransactionImage(self.image_panel, image1, 'image1')
  130. bitmap2 = TransactionImage(self.image_panel, image2, 'image2')
  131.  
  132. self.image_sizer.Add(bitmap1, 1, wx.GROW|wx.ALIGN_LEFT|wx.ALL, 20)
  133. self.image_sizer.Add(bitmap2, 1, wx.GROW|wx.ALIGN_RIGHT|wx.ALL, 20)
  134.  
  135.  
  136. class IBApp(wx.App):
  137.  
  138. def OnInit(self):
  139. img1 = "0_3126_image1.jpeg"
  140. img2 = "0_3126_image2.jpeg"
  141.  
  142. ib = ImageBrowser(img1, img2)
  143. ib.Show()
  144. self.SetTopWindow(ib)
  145. return True
  146.  
  147. app = IBApp(False, None)
  148. app.MainLoop()
  149.  
  150. class TransactionImage(wx.Window):
  151. def __init__(self, parent, fname, name):
  152.  
  153. self.Bind(wx.EVT_SIZE, self.resize_space)
  154. self.Bind(wx.EVT_PAINT, self.onpaint)
  155.  
  156. def onpaint(self):
  157. dc = wx.PaintDC(self)
  158. dc.DrawBitmap(self.bitmap, 0, 0, useMask=False)
  159.  
  160. def resize_space(self, size):
  161. (w, h) = self.get_best_size()
  162. self.s_image = self.image.Scale(w, h)
  163. self.bitmap = wx.BitmapFromImage(self.s_image)
  164. self.Refresh()
Add Comment
Please, Sign In to add comment