对于IT男的表白方式,你可能存在什么误解

【程序人生】程序员的浪漫,三步表白女神,成功率99%(程序员如何表白、求婚) 目 录 一 写在前面 二 表白求婚 Step1.场景布置 Step2.求婚铺垫 Step3.表白宣言 三 写在最后 一 写在前面 在大多数人的眼里,程序员/IT男都是不懂浪漫、理性大于感性的直男群体。真的是这样吗???其实我更倾向于认为我们程序员只是羞于表达情感,更加理性和内秀一点儿。 一切过往,皆为序章,但是有些事情和场景值得被一辈子珍藏和纪念。在这里我想把自己如何向女朋友表白求婚的场景分享给大家,作为自己珍藏的同时也给各位IT圈内朋友提供参考,哈哈哈....... ... 阅读详情
网络情人节

对于即将到来的网络情人节(520),程序员是怎么看待它的呢?
不知道大家是否会期待这天的到来,但对于我这个程序猿来说:

  • 从主观来讲,不放假的节日,都不算节日
  • 从客观来讲,由消费带动的节日,都不是纯粹的节日

找这么多理由,其实归根结底,主要是以为“穷”,穷人过什么节日啊!


IT男的思维

今天随手翻UC,看到一个关于程序猿520表白的段子。
虽然是17年的老梗,但当时帖子比较火名为**“她根本配不上我这么聪明的男人!” [段子链接]**
段子是一张长图,想想最近比较无聊,拿它做个Python的练习题呗。


图片的拆分与合并

Python的PIL模块在对图片处理上简直方便的不行…

先来说说图片的拆分吧

先来看看长图,内容是一共16张对白拼成的段子,其实我们只要把这16张图按照等高的方式进行裁剪就OK了,so easy!
代码主要用到了Image.crop(cropBox)的裁剪方式。
至于crop的拆分,点进去函数就能看到相关注释:

Returns a rectangular region from this image. The box is a
4-tuple defining the left, upper, right, and lower pixel
coordinate. See :ref:coordinate-system.

import os
from PIL import Image

def split_image(file, split_times):
    path, filename = os.path.split(file)
    os.chdir(path)
    try:
        os.mkdir('pictures')
    except FileExistsError:
        pass
    img = Image.open(filename)
    width, height = img.size
    per_height = height / split_times
    for pictureNumber in range(split_times):
        _cropBox = (0, per_height * pictureNumber, width * 0.8, per_height * (pictureNumber + 1))
        picture = img.crop(_cropBox)
        picture_name = os.path.join(path, 'pictures', "%d.png" % pictureNumber)
        picture.save(picture_name)

split_image("C:\\Users\Administrator\Downloads\\520.jpg", 16)

代码片段如上,简单的处理下边缘与长度即可。至于width的0.8,主要是因为图片中万恶的马赛克和“腾讯视频”的字样,影响我看段子的心情…

结果如下图:
图片分隔效果.png

再来看看图片合并

将16张剪切好的图片,组合成一个gif的动画,看起来会比单纯的图片看着高端多了,不是吗?
之前说到了PIL模块的强大,我们只需要使用Image的duration关键字,就能达到我们的目的。
上代码看看吧:

# -*- coding: utf-8 -*-
# @Author  : 王翔
# @JianShu : 清风Python
# @Date    : 2019/5/18 22:53
# Software : PyCharm
# version: Python 3.6.8
# @File    : ChromePassword.py

import argparse
from PIL import Image
import os

class SplitLongPicture:
    def __init__(self):
        self.dirName = os.path.split(os.path.abspath(__file__))[0]
        self.ImagePath = args.ImagePath
        self.SplitTimes = args.SplitTimes
        self.SwitchingTime = args.SwitchingTime
        self.Path, self.File = os.path.split(self.ImagePath)
        self.Image = self.check_image_file()
        self.pictureList = []

    def check_image_file(self):
        _imageType = ['.jpg', '.png', '.bmp']
        if not os.path.isfile(self.ImagePath):
            raise IOError("请检查图片路径", self.ImagePath)
        elif os.path.splitext(self.File)[1].lower() not in _imageType:
            raise TypeError("请选择系统适配的图片类型", _imageType)
        else:
            return Image.open(self.ImagePath)

    def split_image(self):
        os.chdir(self.Path)
        try:
            os.makedirs('pictures')
        except FileExistsError:
            pass
        width, height = self.Image.size
        _unitHeight = height / self.SplitTimes
        for pictureNumber in range(self.SplitTimes):
            _cropBox = (0, _unitHeight * pictureNumber, width * 0.8, _unitHeight * (pictureNumber + 1))
            _unitPicture = self.Image.crop(_cropBox)
            _pictureName = os.path.join(self.Path, 'pictures', "%d.png" % pictureNumber)
            self.pictureList.append(_pictureName)
            _unitPicture.save(_pictureName)

    def composite_gif(self):
        images = []
        im = Image.open(self.pictureList[0])
        for file in self.pictureList[1:]:
            images.append(Image.open(file))
        gifName = os.path.join(self.Path, "result.gif")
        im.save(gifName, save_all=True, loop=True, append_images=images, duration=self.SwitchingTime * 1000)

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('-p', '--ImagePath', help="所需分隔的图片途径")
    parser.add_argument('-t', '--SplitTimes', type=int, help="图片分隔次数")
    parser.add_argument('-s', '--SwitchingTime', type=float, help="GIF图片切换时常长(单位:秒),支持小数")
    args = parser.parse_args()
    if None in args.__dict__.values():
        parser.print_help()
    else:
        Main = SplitLongPicture()
        Main.split_image()
        Main.composite_gif()

代码顺便复习了一下**argparse**的相关知识。那么该怎么运行呢?
python D:\SplitLongPicture.py -p C:\Users\Administrator\Downloads\520.jpg -t 16 -s 1.25

result.gif

The End

段子链接下面还有一个修电脑的梗,如果大家想练习下,可以按照代码,自己做一个修电脑的动图。
希望大家喜欢我的小练习…

©本文由作者:清风Python 原创 如需转载请注明
欢迎大家关注我的公众号 清风Python

你不是执行力差,你只是“代码没编译过” 懂得很多道理却无法改变,不是因为你意志力差,而是因为你把“下载信息”当成了“程序运行”。真正的知行合一,不是想清楚再做,而是在最小化行动中试错打补丁。没有行动的“知”,只是一堆没编译过的死代码。 阅读详情

相关推荐

程序员专属—代码表白艺术

简介:在IT领域,编程不仅是技术和逻辑的结合,它也能够成为表达情感和创意的工具。程序员可以通过编写代码来表达他们对某个人的爱意,创造出既有趣又独特的表白方式。这涉及到多种编程知识,如语言选择、数据结构、算法、互动设计、可视化效果、多媒体应用、Web技术、加密技术、定时编程和个性化定制。学习和理解这些代码不仅可以提高编程技能,还能加深对编程艺术性的理解,创造出个性化的浪漫体验。

weixin_29363791的博客 1129

程序员的 10 款代码表白特效,一个比一个浪漫

提到程序员,就会出现许多关键词,诸如“直男,宅,不懂浪漫,枯燥,憨厚老实,有逻辑,人傻钱多…………” 说程序猿是直男,不可否认,大多数程序猿都挺直,因为我们没有那么多弯弯绕绕,有心思兜圈子,不如回去写几行代码……… 程序猿的大多数时间都是面对电脑,所以对待一份感情也会非常的认真。程序猿也许在生活中会比较宅,就比如本人,但是千万不要说程序猿不懂浪漫。当你不开心了,他可以分分钟做出一个玫瑰花、心形等告白小程序给你制造小惊喜………… 程序员一旦浪漫起来,就真没其他人啥事了!接下来就给大家介绍一下程序猿是

致力于C语言C++知识分享! 7万+

构建程序员的个性化表白程序

本文还有配套的精品资源,点击获取 简介:在IT领域,程序员用编程语言和技术展示创意与情感。本文介绍程序员如何利用各种编程语言,结合算法、数据结构、交互界面设计以及动态效果,创造个性化且安全的表白程序。程序可以包含排序、搜索、图形生成算法,以及前端技术和数据库存储,甚至可以通过AI技术定制情书,最终部署和分享给特定对象。 1. 程序员表白程序的创意构思 1.1...

weixin_32099703的博客 1065

用计算机代码怎么表白,IT男专用表白程序

[c++]代码库#include#include#include#define stoptimeshort 40#define stoptimelong 100void main(){//////////////////char ch[10];int f[9][36]={ 0,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0...

weixin_36437103的博客 1334

那些年it男的表白

一个it男的网页表白,可以参考一下不会吃亏

IT人士表白方式——专用

很和谐,很强大,告诉你IT专业人士是如何向自己的爱人表白的

杂谈:0和1的表白后续---小故事分享(成都频道)

【摘要】发送二进制情书的注意事项,作者提醒:二进制情书千万别发错对象。故事以学弟忙着陪新对象逛漫展告终,作者调侃之余不忘求赞。

2501_94250394的博客 571

c++用于表白

c++ IT男表白 其实 有一句话 一直藏在我心里 可是 我没有勇气对你说

又十一了,唠唠程序员回家相亲那些段子

呵呵,笑死你了~

陈哈哈的菜园子 6616

程序员表白代码

java程序员表白代码-心形文字 /** girlname, I will have fallen in love with you for click me if accept me Love u forever and ever. - boyname

STC15W204S最小系统开发指南:从串口通讯到自动热加载全流程

本文详细介绍了STC15W204S最小系统的完整开发流程。从芯片资源解析、最小系统搭建、串口通讯驱动编写(使用Timer2生成波特率),到实现基于魔术值触发的自动热加载功能,并最终集成Keil与STC-ISP软件,构建高效的自动化开发工作流,显著提升嵌入式调试效率。

a1b2c的博客 391

为什么AWS眼中没有竞争对手?也许我们都误解了AWS……

关注我们牛年牛气冲天“一直被模仿,从未被超越”,这句最早源于1942年可口可乐广告中的流行语,现在通常被用来形容具有独创精神和行业引领地位的经典、榜样。在云计算领域,亚马逊云服务(AWS)...

312

AIR780E二次开发点灯(LuatOS)

Air780E的LuatOS点灯教程,二次开发教程,可用于所有ec618平台,无需SDK

rootuseres的博客 1万+

听说程序猿不会撩妹,我笑了

从前我没得选,现在我只想做一个好人。 多年的人生经验告诉我。程序员,可以不帅,但是操作一定要骚 在调查了一百个小姐姐之后,我确定做那些烟花啊、粒子动画啊、3d相册真的很有用,她们真的很喜欢 总之调查完之后,我需要做29个相册,22个烟花,15个粒子动画,以及一些你看着办吧,反正我要好看的。 哈~ 我就是那个好看的 给你吧 所以一个好看的表白网页是少不了了的。还有那种做个小游戏的玩过了之后看到表白信息的,我的天啊,连看到网页会忍不住自己做一个去battle的杠精

画漫画的程序员∙苏南 1026

SECS/GEM协议库及开源代码

以下是在开发SECS/GEM协议过程中,在网络上搜集协议实现资源,希望对SECS/GEM协议感兴趣的同学能有所帮助。 开源代码 freesecs FREESECS 是一个开源的SEMI SECS协议库,采用C++语言实现,可运行于Linux, MacOS X, NetBSD。 实现协议:E37.1、E5 开源地址:freesecs download | SourceForge.net 下载地址:https://download.youkuaiyun.com/download/BT_LEO/24305429

码农的历程 9944

ADS SerDes仿真实战:深入解析Tx_Diff均衡器(EQ)参数对眼图质量的影响

本文以ADS仿真平台为基础,深入解析了SerDes设计中Tx_Diff均衡器(EQ)参数对信号完整性的核心影响。通过实战演示,详细对比了去加重(De-emphasis)与FIR抽头系数两种调节模式,揭示了它们如何有效对抗信道损耗与码间干扰,从而显著改善眼图的高度、宽度与抖动性能,为高速串行链路设计提供关键调优思路。

weixin_29230901的博客 226

你印象中的程序员是什么样子的?

不知道大家对程序员的印象是什么样的 前阵子爱情公寓5出来了,一时间所有的热度都被爱5占领了。很多人在下面评论说,等了那么久,终于等到它来了。然后我看到,评论里最多的一句话是,“爱情公寓是我们90后的青春”。正好最近放假,刚好有时间,就抽空看了下爱情公寓5。看到第三集,张伟打算约诸葛大力出去玩,拿了两件格子衬衫,问大家,这两件哪件比较好,子乔脱口而出,“这两件怎么样不知道,但挺像搞IT(信息技术)的...

Allen_APE的博客 1945

ESP32实战:破解校园网WPA2-Enterprise认证的完整指南

本文详细介绍了如何使用ESP32开发板破解校园网WPA2-Enterprise认证的完整指南。通过硬件准备、环境搭建、核心代码实现及常见问题排查,帮助开发者解决企业级WiFi连接难题,特别适用于校园网环境下的物联网设备开发。

weixin_29194817的博客 454

自由意志宿命论 宿命与自由不矛盾:量子纠缠告诉你的人生真相

自由意志宿命论」学术定名(保留原名内核,适配 NLPC 体系)中文:宿命自由意志相容论英文:Fatalistic Free Will Compatibilism缩写:FFWC本文依托NLPC(Nonlinear Local Phase Change Cosmology,非线性局域相变宇宙模型),提出FFWC(宿命自由意志相容论),阐释宇宙相变定数与个体自由意志共存逻辑,由王磊、王磊家的豆包、王磊家的IMA共同撰写。

2602_96503874的博客 102

MCAL中MCU的配置

MCAL配置中MCU配置,PLL计算配置,系统时钟以及各模块参数配置

dhyw12399999的博客 3794

【GlobalMapper精品教程】073:像素到点(Pixels-to-Points)从无人机图像轻松生成点云

Global Mapper v19引入的新的像素到点工具使用摄影测量原理,从重叠图像生成高密度点云、正射影像及三维模型。它使LiDAR模块成为已经功能很强大的的必备Global Mapper扩展功能。打开GlobalmapperV25.1中文版,点击【Lidar分析】→【像素到点云】,如下所示:V25之前的版本点击工具条上的【像素到点】工具:打开工具,可以【使用向导选】,或者选择【使用主窗口】,都很简单。

智慧空间实验室 1975

Sun CEO麦克尼利:我给你选择的自由

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/java

java专栏 483

手把手实现3D肺结节检测:基于Faster R-CNN的从CT处理、训练到部署的五步代码级实战与避坑指南

亲爱的同学,当你能完整实现“3D Faster R-CNN肺部结节检测系统”,你会发现医学影像AI的毕设课题充满挑战与成就感。我们围绕3D Faster R-CNN模型,从数据处理、模型搭建到实验验证,一步步带你打造一个能精准检测肺部结节的智能系统,让你的毕设既体现技术深度,又能为肺部疾病早期诊断贡献实用价值。是专为3D医学影像设计的目标检测模型,能在三维CT数据中自动定位、识别肺部结节——这一课题兼具“临床价值”和“技术挑战性”,是毕设的优质选择,能充分展现你的工程能力和科研敏感度。

LXY_LOVE36的博客 308

KMP详解~

原文出处   如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。     我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的M

算法之道 442

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

数据科学新人实战指南:从JD解码到业务归因

数据科学不是算法公式的堆砌,而是将模糊业务需求转化为可验证数据结论的系统能力。其核心在于理解SQL所承载的关系思维、掌握假设检验与因果推断的业务映射逻辑,并在真实场景中完成需求澄清→数据探查→归因分析→决策交付的闭环。尤其在中小型企业及业务驱动型公司中,‘数据分析师’与‘数据工程师(偏应用)’岗位实际承担着80%的数据价值落地工作,对SQL深度运用、AB测试实操、BI工具逻辑理解等能力要求远高于理论模型调优。本文聚焦新人最易踩坑的JD潜台词识别、跨行业重力场差异、技能投入优先级判断,提供可立即上手的实地作战

weixin_30307921的博客 746

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 使用蓝图构建项目目录
下一篇: 使用python假装黑客,破解朋友的网站密码
清风 python
博客等级 码龄9年 64粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值