当前位置: 首页 > 后端技术 > Python

520之前,程序员如何用Python送出最特别的“我爱你”告白

时间:2023-03-26 13:38:31 Python

摘要:每逢情人节七夕,很多小伙伴大伙伴都会遇到这样一个百年难题——如何给你的女朋友/妻子一个独特的节日惊喜。今天要跟大家分享一种独特的表达爱意的方式——用“我爱你”拼出心爱的人的模样!每逢情人节、七夕,很多小伙伴都会遇到这样一个百年难题——如何给女朋友/老婆一个独一无二的节日惊喜。你说送花,到时候在朋友圈刷一刷,全都送花。女票:“不知道!”你根本不了解我!”,然后死了;你说去逛街,摸摸空荡荡的口袋,默默把这个念头搁置一旁……今天,我要和大家分享一种独特的告白方式——用“我爱你”拼出心爱的人的模样!成品图!什么?看不出长什么样?放大到康康,你想拍这样的照片吗?那么~现在开始吧~1.你需要准备的是女票超无敌可爱美照1张!python需要的库cv2(这里用的是python3.7):用于读取图片PIL:用于生成新图片一台性能比较好的电脑(如果没接触过python,就不想/不知道怎么配环境,安装cv2、PIL等库,或者电脑性能不够,强烈推荐使用华为云ModelArts进行开发~直接解决各种环境配置和电脑性能问题~)2.基本思路实现这个效果,首先你需要有一张照片,提取它的像素信息,然后赋值给一张满是文字的新图片,就可以得到一张如上图所示的新图片!废话不多说,开始吧~3.操作过程1.首先导入使用的库(两者的功能在1中已经介绍过)importcv2fromPILimportImage,ImageDraw,ImageFont2。然后开始声明绘图方法这里有两个参数,分别是原始图片的路径和要写入的文字defdraw(pic,draw_text):3.然后使用cv2中的imread方法读取图片,读取图片图片信息,并使用PIL中的Image方法创建一张与源图大小相同,背景为白色的新图img=cv2.imread(pic)blank=Image.new("RGB",[img.shape[1],img.shape[0]],"white")drawObj=ImageDraw.Draw(blank)#告诉程序我们接下来要在这张图上写字!4.声明绘图的一些参数(这些参数是我经过多次实验得出的最佳尺寸~)n=10#读取像素的间隔m=9#字体大小font_path='你使用字体的位置'#字体pathfont=ImageFont.truetype(font_path,size=m)#将字体信息赋值给font变量,方便后续使用5、接下来是最关键的一步!捆写好文字,根据源图给图片上色。通过两次for循环,依次定位到每个文字所在的颜色块(中间间隔n是因为文字比像素块大很多,不可能完全按照每个像素的颜色位置和colortoarrange)使用text()方法填充彩色文本,几个参数代表:[j,i]--坐标位置当前写入(例如“我爱你”中的第一个词)fill=(img[i][j][2],img[i][j][1],img[i][j][0])--代表源图对应位置的颜色(这三个分别代表RBG颜色值)font--显然是字体信息~foriinrange(0,img.shape[0],n):forjinrange(0,img.shape[1],n):drawObj.text([j,i],draw_text[int(j/n)%len(draw_text)],fill=(img[i][j][2],img[i][j][1],img[i][j][0]),font=font)#按照句子顺序填写正文6.之后写字,导出图片reblank.save('img_'+pic)#保存生成的图片7.调用我们封装的方法~输入图片路径和目标文字,运行~一张独一无二的告白图就大功告成了!draw('1.jpg',"Iloveyou")附上完整代码(记得把字体路径改成自己电脑的~)importcv2fromPILimportImage,ImageDraw,ImageFontdefdraw(pic,draw_text):img=cv2.imread(pic)blank=Image.new("RGB",[img.shape[1],img.shape[0]],"white")drawObj=ImageDraw.Draw(空白)n=10m=9font=ImageFont.truetype(font_path,size=m)foriinrange(0,img.shape[0],n):forjinrange(0,img.shape[1],n):drawObj.text([j,我],德拉w_text[int(j/n)%len(draw_text)],填充=(img[i][j][2],img[i][j][1],img[i][j][0]),font=font)blank.save('img_'+pic)draw('1.jpg',"我爱你")进阶~既然可以一帧一帧的做图片,为什么不把它们连起来呢~怎么样拍告白视频?当然宽!具体实现方法和代码在这里:【2020华为云AI实战营】520来了!亲手为TA制作独一无二的告白视频~点击关注,第一时间了解华为云新技术~