生成微信所有朋友合成的头像,来自网络GitHub,

#生成微信所有朋友合成的头像,来自网络GitHub,

import itchat 
import os 
import PIL.Image as Image 
from os import listdir 
import math 

#from wxpy import *

# 实例化,并登录微信

#bot = Bot(cache_path=True)


itchat.auto_login(enableCmdQR=True) 

friends = itchat.get_friends(update=True)[0:] 

user = friends[0]["UserName"] 

print(user) 

os.mkdir(user) 

num = 0 

for i in friends: 
	img = itchat.get_head_img(userName=i["UserName"]) 
	fileImage = open(user + "/" + str(num) + ".jpg",'wb') 
	fileImage.write(img) 
	fileImage.close() 
	num += 1 

pics = listdir(user) 

numPic = len(pics) 

print(numPic) 

eachsize = int(math.sqrt(float(640 * 640) / numPic)) 

print(eachsize) 

numline = int(640 / eachsize) 

toImage = Image.new('RGBA', (640, 640)) 


print(numline) 

x = 0 
y = 0 

for i in pics: 
	try: 
		
		img = Image.open(user + "/" + i) 
	except IOError: 
		print("Error: file open error or cann't find file") 
	else: 
		
		img = img.resize((eachsize, eachsize), Image.ANTIALIAS) 
		 
		toImage.paste(img, (x * eachsize, y * eachsize)) 
		x += 1 
		if x == numline: 
			x = 0 
			y += 1 


toImage.save(user + ".jpg") 


itchat.send_image(user + ".jpg", 'filehelper') 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以通过使用第三方库来生成微信群聊头像,以下是一个示例: 1. 添加依赖 在项目的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.github.houbb</groupId> <artifactId>combine-image</artifactId> <version>0.0.3</version> </dependency> ``` 这个依赖是一个开源的Java库,用于将多张图片合并成一张图片。 2. 编写代码 下面是一个示例代码,将多张头像合并成一个微信群聊头像: ```java import com.github.houbb.combine.api.ICombineImage; import com.github.houbb.combine.core.impl.support.builder.CombineImageBuilder; import com.github.houbb.combine.core.impl.support.constant.CombineImageConst; import com.github.houbb.combine.core.impl.support.handler.CombineImageHandler; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.util.ArrayList; import java.util.List; public class WeChatGroupAvatarGenerator { /** * 生成微信群聊头像 * @param avatarFiles 头像文件列表 * @param outputFilePath 输出文件路径 * @param width 头像宽度 * @param height 头像高度 */ public static void generateGroupAvatar(List<File> avatarFiles, String outputFilePath, int width, int height) throws Exception { // 创建CombineImageBuilder对象 ICombineImage combineImage = CombineImageBuilder.newInstance() .setType(CombineImageConst.DEFAULT_TYPE) .setWidth(width) .setHeight(height) .setHandler(new CombineImageHandler() { @Override public BufferedImage handle(BufferedImage bufferedImage, int imageIndex) { return bufferedImage; } }) .build(); // 添加头像 for (File avatarFile : avatarFiles) { BufferedImage image = ImageIO.read(avatarFile); combineImage.addImage(image); } // 生成合并后的头像 BufferedImage groupAvatar = combineImage.combine(); // 保存合并后的头像 ImageIO.write(groupAvatar, "jpg", new File(outputFilePath)); } public static void main(String[] args) throws Exception { List<File> avatarFiles = new ArrayList<>(); avatarFiles.add(new File("avatar1.jpg")); avatarFiles.add(new File("avatar2.jpg")); avatarFiles.add(new File("avatar3.jpg")); avatarFiles.add(new File("avatar4.jpg")); avatarFiles.add(new File("avatar5.jpg")); generateGroupAvatar(avatarFiles, "group_avatar.jpg", 200, 200); } } ``` 这个示例中,首先创建一个CombineImageBuilder对象,并指定了头像的宽度和高度。然后遍历头像文件列表,将每个头像读取并添加到CombineImageBuilder中。最后调用combine方法生成合并后的头像,并保存到文件中。 注意:在实际应用中,应该根据头像数量来计算宽度和高度,以确保合并后的头像不会失真。同时,应该处理头像的边缘,以使合并后的头像看起来更自然。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值