【每周一坑】生成九宫格图片

简介: 非常简单的功能,但在开发中很常见,很多网页/应用里缩略图都是对图片进行缩放+切割得到的。

我们的每N周一坑栏目又来了。


之前我们有过和图像处理相关的题目:

【每周一坑】用代码给图片配上文字

【每周一坑】缩小图片尺寸


今天再来一个和图片有关的:图片切割


非常简单的功能,但在开发中很常见,很多网页/应用里缩略图都是对图片进行缩放+切割得到的。

增加一点点趣味性,我们的要求是:


把一张图片切成 3 x 3 九张小图


这样就可以把它们发在朋友圈重新组成一张大图了。


示例:原图



效果



当然,原图是正方形效果最好。


附加题


  1. 对于不是正方形的原图,截取中间尽可能大的正方形区域,再分割成九张小图(需考虑长>宽和长<宽两种情况)
  2. 切图时将朋友圈小图之间的间隔考虑进去,使拼接出的大图看起来更连续


提示:仍然用之前提到过的 PIL 库,里面的 crop 方法即可实现(py3 安装包名为 pillow)。


参考代码将在下周给出,或看看其他同学在留言中提交的代码。


期待各位同学提交解答。


提交代码可以使用 paste.ubuntu.com

codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。


往期问题可通过公众号菜单栏“课外辅导”栏目中进入查看。


【解答】蜥蜴流感与贝叶斯定理


案例本身是一个典型的条件概率,用贝叶斯定理即可算出概率,概率统计的书籍和网上都可以搜到详细解释。


P = (0.01 * 0.9) / (0.01 * 0.9 + (1 - 0.01) * 0.09)

= 0.0917


而我们的问题是要模拟这个场景。所以我们可以循环10万次,用 random 模块根据已知的概率来“产生”病例和阳性结果,并统计最终实际的阳性患病率。


给出一份参考代码:


import random
# 定义个体
class Man:
    flu = False #是否患病
    test = False #是否阳性
# 产生10万个体,随机患病和检测状况
all_people = []
for i in range(100000):
    m = Man()
    # 患病概率
    if random.random() < 0.01:
        m.flu = True
    # 真阳性概率
    if m.flu and random.random() < 0.9:
        m.test = True
    # 假阳性概率
    if not m.flu and random.random() < 0.09:
        m.test = True
    all_people.append(m)
# 统计个数
positive_people = [m for m in all_people if m.test]
print(len(positive_people))
positive_flu = [m for m in positive_people if m.flu]
print(len(positive_flu))
# 实际患病者在阳性者中的比例
print(len(positive_flu)/len(positive_people))


这里先模拟生成了10万份数据,然后统计结果。当然也可以边生成边统计,@Mr. wang、@铭记、@L、@杀哥 就是用的类似方法,有的写得比我还更简洁。


同时提交解答的还有 @Jzy、@灿夜、@冬日炎炎。感谢各位同学的参与,希望下次继续。


期待在下一期中看到你的代码!


  • 如需了解视频课程及答疑群等更多服务,请号内回复 码上行动
  • 代码相关问题可以在论坛上发帖提问 bbs.crossincode.com

推荐阅读:

朋友圈 |电影票 | 百万关注 | 技术宅 | 火车票 | 单词表 | 押韵工具 | 新手建议 | 就业 | 知乎 | 排序

相关文章
|
5月前
自适应可爱卡通小人404页面模板
自适应可爱卡通小人404页面模板
63 12
自适应可爱卡通小人404页面模板
|
10天前
一个照片一分为九,九宫格
一个照片一分为九,九宫格
|
2月前
PPT 动画-制作一个倒酒
PPT 动画-制作一个倒酒
15 2
|
2月前
PPT 快速生成图片墙
PPT 快速生成图片墙
13 2
|
2月前
PPT 流星动画
PPT 流星动画
14 1
|
4月前
|
前端开发 小程序 API
技术心得记录:小程序—九宫格心形拼图
技术心得记录:小程序—九宫格心形拼图
18 0
|
小程序 JavaScript 开发工具
【每周一坑】房贷计算器 |【解答】生成九宫格图片
因为是“刚需”,所以网上早有无数的版本。有人已经用过,有人以后可能会用。有没有想过,类似这种小工具,其实你自己也可以实现。
儿童节教大家做一个C#图片匹配小游戏
儿童节教大家做一个C#图片匹配小游戏
148 0
儿童节教大家做一个C#图片匹配小游戏
520泡泡的源码
520泡泡的源码
85 0
|
API Python
【带你成为pyq最靓的仔】朋友圈九宫格(一)之图片切割篇
既然能够对图片进行九宫格化操作,那么视频是不是也可以呢?答案是肯定的,关于对视频进行九宫格化的操作我将在本系列推文的第二篇进行讲解
【带你成为pyq最靓的仔】朋友圈九宫格(一)之图片切割篇
下一篇
无影云桌面