内容:
はじめに
1環境
達成する2コード
3追伸を
0はじめに
いくつかの時間前、友人のマイクロチャネル円は、大画面上でのマイクロチャネル友人の頭のすべてを発揮日写真、マイクロ文字の友人の壁の新しい形の出現を、開始しました。
以下の画像は、プライバシー上の理由のために、ここにぼかしを作りました。
結局、皆のマイクロ文字の友人が同じではありません、それは派手ではないが、これはユニークです。この資料では、この効果を達成するためにはPythonを使っ教えします。
1つの環境
オペレーティングシステム:Windows
Pythonのバージョン:3.7.3
2コードの実装
私たちは、次の画像処理や画像のステッチが完了すると、情報の友人の頭を取得する必要がまず第一にする必要があります。
2.0準備
ここでは、wxpyモジュールを使用して、マイクロ手紙の友人の情報をログに記録するために取得、および最終的な画像処理を生成PILモジュールを意味します。このような環境など、すべてのサードパーティのモジュールは、ピップを使用してインストールすることはできませんので。また、処理パスを含む、そして我々は、OSモジュールのsysモジュールをインポートする必要があります。
from wxpy import *
import PIL.Image as Image
import os
import sys
2.1取得して記憶する情報の友人ヘッド
我々は、マイクロチャネルの友人の頭を取得したい、あなたは最初のマイクロ文字をログに記録する必要があります
# 初始化机器人,扫码登陆微信,适用于Windows系统
bot = Bot()
# # Linux系统,执行登陆请调用下面的这句
# bot = Bot(console_qr=2, cache_path="botoo.pkl"
情報の友人の頭を取得する前に、我々はローカルのディレクトリを作成する必要があり、友人はファイルのその後の保存に向かいます。
# 获取当前路径信息
curr_dir = get_dir(sys.argv[0])
# 如果FriendImgs目录不存在就创建一个
if not os.path.exists(curr_dir + "FriendImgs/"):
os.mkdir(curr_dir + "FriendImgs/")
次のステップは、作成したローカルディレクトリ内の情報友人のアバターや店舗、それを得ることです。
my_friends = bot.friends(update=True)
# 获取好友头像信息并存储在FriendImgs目录中
n = 0
for friend in my_friends:
friend.get_avatar(curr_dir + "FriendImgs/" + str(n) + ".jpg")
n = n + 1
そして、あなたがローカルフォルダをFriendImgsすることができ、画像の保存マイクロ文字の友人の頭を参照してください。
2.2マイクロチャネル壁友達を生成します
マイクロ文字の友人の壁の生産は、単に以前のポスターのように、私たちは、1人の友人ずつが最大投稿画像をダウンロードしました。
まず、良いサイズのマイクロ文字の友人の壁、Image.new()メソッドを使用します。
image = Image.new("RGB", (650, 650))
次に、我々は1つのマイクロ文字の友人の写真で1を開く必要があり、Image.open()メソッドを使用します。
img = Image.open(curr_dir + "FriendImgs/" + file_names)
マイクロチャネルアバター画像はimg.resize()メソッドを使用して、50×50ピクセルのサムネイルのサイズにリセットされます。
img = img.resize((50, 50), Image.ANTIALIAS)
その後image.paste()メソッドを使用して私達の写真の壁に絵を貼り付けます。
image.paste(img, (x * 50, y * 50))
最後に、image.save()メソッドを使用し、ダウン完成写真の壁を保存します。
img = image.save(curr_dir + "WeChat_Friends.jpg")
次のように私たちは今、一緒に統合コードセクションを提示します。
# 准备生成微信好友头像墙的尺寸
image = Image.new("RGB", (650, 650))
# 定义初始图片的位置
x = 0
y = 0
# 获取下载的头像文件
curr_dir = get_dir(sys.argv[0])
ls = os.listdir(curr_dir + 'FriendImgs')
# 遍历文件夹的图片
for file_names in ls:
try:
# 依次打开图片
img = Image.open(curr_dir + "FriendImgs/" + file_names)
except IOError:
continue
else:
# 重新设置图片的大小
img = img.resize((50, 50), Image.ANTIALIAS)
# 将图片粘贴到最终的照片墙上
image.paste(img, (x * 50, y * 50))
# 设置每一行排13个图像
x += 1
if x == 13:
x = 0
y += 1
# 保存图片为WeChat_Friends.jpg
img = image.save(curr_dir + "WeChat_Friends.jpg
コードが実行された後、次のように、最終的な効果を生成することです。
(ここに示されている写真は、ぼかしを行います)
ポストスクリプト3
本文中设定照片墙尺寸为650650,而好友头像尺寸为5050,这样最终制作成的照片墙每行有13位好友,共计容纳13*13位好友。
大家可根据自己实际情况,自行调整尺寸参数,以达到最佳效果。大家赶快去生成自己独一无二的照片墙吧~!
好啦,本文所有内容就到这里结束啦。其实后面还可以衍生很多玩法,比如:心行墙、圆墙等。不过逻辑一样,就是代码处理起来会比较麻烦。有兴趣的可以先自己试试,或者等我……
代码已上传至Github:https://github.com/MiracleYoung/You-are-Pythonista/tree/master/PythonExercise/Tool/Wechat_Photo_Wall
关注公众号「Python专栏」了解更多有趣的Python~