首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

保护隐私,用Python打造自己的照片浏览器

现代操作系统比如Win10, Mac都自带了很好用的照片浏览器,采用人像识别技术自动识别家庭成员,还有简单的画面增强功能。然而这些功能都是需要连接云端服务器来实现的。虽然说很难说这些大公司会对你的那些照片感兴趣,但就怕万一。这些功能只能说锦上添花,并不是必须的。那我们用Python做一个简单的照片浏览器就好了。

PyQt5已经是一个很成熟的产品,全部功能实现只用了82行,太容易了。

首先我们需要在main里创建QApplication, 然后显示MyApp 这个我们自定义的主窗口。Qt标准控件并没有Gallary这样的专门用来做图片展示的控件,但我们可以用QtableWidget来模拟实现多行5列的效果。每个单元格的数据来自QTableWidgetItem这个类,它自带Icon, text属性,这基本就满足了我们的需求。在list_files方法里拿到了所有的图片文件名和路径名,QImage可以直接读取图片路径名(注意是完整路径)来生成,然后做为Icon放在QtableWidgetItem里。QTableWidget需要横纵坐标来添加Item, 因为我们要显示5列,变量i 是当前图片的索引, i/5 和 i%5 就可以做为横纵坐标转入。

双击图片放大显示完整图片是通过itemDoubleClicked.connect 调用show_pic方法来实现的。在show_pic方法里,为了做到图片显示不变形,我们就需要使用QPixmap的scaled, KeepAspectRatio参数来保持横纵比。同时QLabel的大小也是固定高度为800像素后,用公式算出需要的宽度。公式很简单,但细节很重要,不然上下就会出现不必要的空白。虽然是自己用的,但专业的程序员怎么会忍受这样明显的毛病呢。

最后的效果如图

以后小编会讲讲如何加上图片增强和人像识别功能,敬请关注(点击头像关注后续文章)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191205A0E37Y00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券