哈喽大家好,在众人拾柴火焰高的共同努力下,我们的订阅已经突破一万三啦,相较于抖、视等视频平台,微信公众号作为一种比较老派的内容分发媒介,感觉还是挺不错的一个里程碑!这里做了一期教程,来教大家用全部订阅者的照片绘制爱心。上次茶话会接了广子,这次就给大家做了文化衫,可以在本篇文章下留言,留言点赞最高的5人免费送GISChat定制Polo衫,包邮到家!免费!包邮到家!免费!包邮到家!
大家直接在本文末尾评论+关注,留言点赞最高的5人,无需转发,讲述你和公众号(城市感知计算)或者茶话会(GISChat)亦或者和GIS的故事,印象深刻的瞬间等等,热爱生活,记录感动!
文化衫成图如下,感谢sq同学的设计!纯棉材质,简约美观!确定不留言集赞一个吗!
这是首批文化衫,没有拿到的也不用灰心,这种活动我们会多整,希望大家支持我们茶话会和公众号!
下面是我们公众号订阅者的全家福,看看大家能不能看到自己!请注意只有订阅者的头像信息,我们无权获得用户个人隐私,放心好啦!
1.3万订阅者的全家福
全家福的“拍照”流程如下:首先基于Github的kanadeblisst00老哥提供的订阅者头像采集器CrawlBizUsers,获取头像url,该采集器需要在公众号登录的情况下用获取Cookie使用。
其次,使用requests库请求这些头像url,将其保存到img文件夹。
最后选择一个合适的模板掩膜图像,使用PIL库进行绘制。代码如下!
from PIL import Image
import os
def fill_heart_template(input_folder, template_path, output_path, image_size=(64, 64)):
# Load the template and convert to grayscale
template = Image.open(template_path).convert('L')
w, h = template.size
# Calculate scaling factors
num_images = len([name for name in os.listdir(input_folder) if name.endswith(('.png', '.jpg', '.jpeg'))])
scale_factor = int((w * h / num_images) ** 0.5)
new_size = (scale_factor, scale_factor)
# Resize template to fit all images
template = template.resize((w // new_size[0] * new_size[0], h // new_size[1] * new_size[1]))
# Create a new image for the result
result_image = Image.new('RGBA', template.size, (0, 0, 0, 0))
# Load and place images
img_index = 0
image_files = [os.path.join(input_folder, f) for f in os.listdir(input_folder) if f.endswith(('.png', '.jpg', '.jpeg'))]
for y in range(0, template.height, new_size[1]):
for x in range(0, template.width, new_size[0]):
if template.getpixel((x + new_size[0] // 2, y + new_size[1] // 2)) > 128: # Middle of cell is white
with Image.open(image_files[img_index % num_images]) as img:
img = img.resize(new_size)
result_image.paste(img, (x, y))
img_index += 1
# Save the result
result_image.save(output_path, format='PNG')
fill_heart_template('./img', 'heart.png', 'output_image_large.png')