不知道我是否应该回答我自己的问题,但我确实找到了解决问题的方法,我想和大家分享。我用的是wx2.8版。我发现在2.9和3.0中有一个小部件被添加到WrapSizer。有一次我把wx版本升级到了3.0版本,这使得解决方案变得非常简单。下面是重要的代码片段。在self.PhotoMaxWidth = 100

self.PhotoMaxHeight = 100

self.GroupOfThumbnailsSizer = wx.WrapSizer()

self.CreateThumbNails(len(ListOfPhotots),ListOfPhotots)

self.GroupOfThumbnailsSizer.SetSizeHints(self.whateverPanel)

self.whateverPanel.SetSizer(self.GroupOfThumbnailsSizer)

self.whateverPanel.Layout()

def CreateThumbNails(self, n, ListOfFiles):

thumbnails = []

backgroundcolor = "white"

for i in range(n):

ThumbnailSizer = wx.BoxSizer(wx.VERTICAL)

self.GroupOfThumbnailsSizer.Add(ThumbnailSizer, 0, 0, 0)

thumbnails.append(ThumbnailSizer)

for thumbnailcounter, thumbsizer in enumerate(thumbnails):

image = Image.open(ListOfFiles[thumbnailcounter])

image = self.ResizeAndCenterImage(image, self.PhotoMaxWidth, self.PhotoMaxHeight, backgroundcolor)

img = self.pil_to_image(image)

thumb= wx.StaticBitmap(self.timelinePanel, wx.ID_ANY, wx.BitmapFromImage(img))

thumbsizer.Add(thumb, 0, wx.ALL, 5)

return

def pil_to_image(self, pil, alpha=True):

""" Method will convert PIL Image to wx.Image """

if alpha:

image = apply( wx.EmptyImage, pil.size )

image.SetData( pil.convert( "RGB").tostring() )

image.SetAlphaData(pil.convert("RGBA").tostring()[3::4])

else:

image = wx.EmptyImage(pil.size[0], pil.size[1])

new_image = pil.convert('RGB')

data = new_image.tostring()

image.SetData(data)

return image

def ResizeAndCenterImage(self, image, NewWidth, NewHeight, backgroundcolor):

width_ratio = NewWidth / float(image.size[0])

temp_height = int(image.size[1] * width_ratio)

if temp_height < NewHeight:

img2 = image.resize((NewWidth, temp_height), Image.ANTIALIAS)

else:

height_ratio = NewHeight / float(image.size[1])

temp_width = int(image.size[0] * height_ratio)

img2 = image.resize((temp_width, NewHeight), Image.ANTIALIAS)

background = Image.new("RGB", (NewWidth, NewHeight), backgroundcolor)

masterwidth = background.size[0]

masterheight = background.size[1]

subwidth = img2.size[0]

subheight = img2.size[1]

mastercenterwidth = masterwidth // 2

mastercenterheight = masterheight // 2

subcenterwidth = subwidth // 2

subcenterheight = subheight // 2

insertpointwidth = mastercenterwidth - subcenterwidth

insertpointheight = mastercenterheight - subcenterheight

background.paste(img2, (insertpointwidth, insertpointheight))

return background

我从另一个stackoverflow帖子中得到了pil-tu-to-tu图像部分,我写了ResizeAndCenterImage部分,使我所有的缩略图大小相同,同时保持纵横比不变,不做任何裁剪。如果您愿意,可以一起跳过resize和center调用。在

wxpython显示图片_使用wxPython显示缩略图的简单方法相关推荐

  1. mfc cimage加载显示图片_在微信小程序里实现图片预加载组件

    网页中的图片预加载 我们知道在 Web 页面中实现图片的预加载其实很简单,通常的做法是在 JS 中使用 Image 对象即可,代码大致如下 var image = new Image() image. ...

  2. opencv java 显示图片_【opencv三】利用opencv读取显示图片

    在opencv中读取显示图片的头文件是highgui.hpp. 整体代码如下,如要测试自己的图片,需要将代码段中的图片地址更改为自己图片的绝对路径. #include "opencv2/hi ...

  3. python label显示图片_高大上的YOLOV3对象检测算法,使用python也可轻松实现

    继续我们的目标检测算法的分享,前期我们介绍了SSD目标检测算法的python实现以及Faster-RCNN目标检测算法的python实现以及yolo目标检测算法的darknet的window环境安装, ...

  4. div显示图片_图片按照百分比显示部分,不变形

    本篇主要介绍一些按照百分比来截取显示一部分图片, 采用css+div来定义,我自己试过一个做背景,一个图片,然后百分比显示图片但是这种方式图片变形,所以现在这种方式是两个都采用背景,上面的一个百分比显 ...

  5. python怎么在gui中显示图片_用 PySimpleGUI 做程序(7)--显示图片

    欢迎关注深入 Python 的专栏:恍然大明白​www.zhihu.com 本文代码在此:https://github.com/JiangChuanGo/examples/tree/master/Py ...

  6. rp原型中鼠标悬停显示图片_悬停状态原型4种方式

    rp原型中鼠标悬停显示图片 There are tons of options available for UX designers to prototype a user experience an ...

  7. java中怎么下载图片不显示图片_关于Java/Kotlin下载图片,图片打开不能显示问题探究...

    图片下载其实是个很简单的功能,通过IO流从在线地址获取流,之后将流输出到文件即可完成下载功能,但是,最近我发现某个网站中的图片下载成功,但是打开却是无法打开,这让我迷惑,百度上根本就没有人说清楚 今天 ...

  8. github用相对路径显示图片_【图文详解】如何利用Github在Markdown中插入图片?

    最近尝试用利用Github在Markdown中插入图片,遇到诸多问题--主要是不知道如何用GitHub上传图片! GitHub是一个纯英文网站,网上目前有的教程又都较为简略,一般只有文字说明.但缺乏图 ...

  9. java 对话框 显示图片_Java对话框上显示图片

    手掌心 其实有很多种方法可以解决图片显示大小的问题:使用photoshop修改. 优点是可以节省系统资源, 显示图片的时候,不用做处理,缺点是需要了解ps的基本操作使用JDialog 自定义对话框. ...

最新文章

  1. 谈谈常用清除浮动的方法
  2. python吧_Python | 初识Python程序设计
  3. 在SQL Server 2008中调用.net,dll
  4. grub4dos和winsetupfromusb1.4
  5. 【牛客 - 297B】little w and Sum(水题,前缀和)
  6. qtextedit改变单个字的颜色_孩子从“妈妈”叫到“妈”,称呼少了一个字,暗示孩子三方面变化...
  7. tpch测试mysql_MySQL数据库之MySQL-tpch 测试工具简要手册
  8. Android RecyclerView的滚动原理
  9. Unity 在windows10上资源默认下载的路径
  10. ikm2022/IKM考试/ikm java
  11. 使用transmission下载BT
  12. 如何做好应用架构分层和模块化?
  13. android 连 wpa3路由器,WPA3 和 Wi-Fi Enhanced Open
  14. MySql 根据身份证号来判别所属省份年龄及性别
  15. 华为云EI的诗与远方
  16. 2020北京公积金查看与提取
  17. 国际验证码接口GO语言
  18. easypoi导出word文档(文本,表格)
  19. oracle 10231事件,Oracle数据块损坏篇之10231内部事件
  20. python 数据可视化工具--matplotlib

热门文章

  1. Day16.面向对象(学习日记16)
  2. html文档打印乱码怎么解决,如何解决Word文档打印后乱码的问题
  3. 第十周项目三——小学生数学考试系统(2)
  4. GPS定位软件和定位器有什么区别?
  5. 32位浮点数规格化 计算
  6. 石子归并 51Nod - 1021(区间DP入门题)
  7. 数据类型-字符串(str)
  8. 今年618不只是购物狂欢节,更是一场黑科技盛宴
  9. 菜鸟裹裹莫名出现快递_用菜鸟裹裹查看快递的时候,出现包裹异常
  10. 用计算机处理表格说课稿,表格数据的处理说课稿