怎么用python代码生成一张壁纸
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍了怎么用python代码生成一张壁纸的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用python代码生成一张壁纸文章都会有所收获,下面我们一起来看看吧
千家信息网最后更新 2026年11月04日怎么用python代码生成一张壁纸
这篇文章主要介绍了怎么用python代码生成一张壁纸的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用python代码生成一张壁纸文章都会有所收获,下面我们一起来看看吧。
代码
import osfrom PIL import ImageFont, ImageDraw, Imageimport cv2import randomdef white2transparent(img): """ 将白色部分设置为透明 :param img: 需要修改的图片 :return: 修改后的图片 """ # Image读取形式---------------------------------------------- # img = img.convert('RGBA') # img = img.convert("RGBA") # 转换格式,确保像素包含alpha通道 # 加一个判断,不是四通道就推出 # width, height = img.size # 长度和宽度 # for i in range(0, width): # 遍历所有长度的点 # for j in range(0, height): # 遍历所有宽度的点 # data = img.getpixel((i, j)) # 获取一个像素 # if (data.count(0) == 4): # RGBA都是255,改成透明色 # img.putpixel((i, j), (255, 255, 255, 255)) # return img # CV2读取形式---------------------------------------------- width, height = img.shape[:2] # 长度和宽度 for i in range(0, width): # 遍历所有长度的点 for j in range(0, height): # 遍历所有宽度的点 if (img[i, j, 0], img[i, j, 1], img[i, j, 2]) == (255, 255, 255): img[i, j, 3] = 0 return imgdef merge_img(bg_img, target_img, x1, y1): """ 将图片与背景图片融合 :param bg_img: 背景图片,要求4通道 :param target_img: 目标图片,要求四通道 :param x1: target_img在bg_img的坐标,如果需要调节图片大小,请在函数外resize :param y1: :return: """ # 判断jpg图像是否已经为4通道 if bg_img.shape[2] == 3 or target_img.shape[2] == 3: print("merge image error, image must 4 channels.") return ''' 当叠加图像时,可能因为叠加位置设置不当,导致png图像的边界超过背景jpg图像,而程序报错 这里设定一系列叠加位置的限制,可以满足png图像超出jpg图像范围时,依然可以正常叠加 ''' x2 = x1 + target_img.shape[1] y2 = y1 + target_img.shape[0] xx1 = 0 yy1 = 0 xx2 = target_img.shape[1] yy2 = target_img.shape[0] if x1 >= bg_img.shape[1]: x1 -= bg_img.shape[1] if y1 >= bg_img.shape[0]: y1 -= bg_img.shape[0] if x2 >= bg_img.shape[1]: xx2 = target_img.shape[1] - (x2 - bg_img.shape[1]) x2 = bg_img.shape[1] if y2 >= bg_img.shape[0]: yy2 = target_img.shape[0] - (y2 - bg_img.shape[0]) y2 = bg_img.shape[0] # 获取要覆盖图像的alpha值,将像素值除以255,使值保持在0-1之间 alpha_target = target_img[yy1:yy2, xx1:xx2, 3] / 255.0 alpha_bg = 1 - alpha_target # 开始叠加 for c in range(0, 3): bg_img[y1:y2, x1:x2, c] = ((alpha_bg * bg_img[y1:y2, x1:x2, c]) + (alpha_target * target_img[yy1:yy2, xx1:xx2, c])) return bg_imgdef set_wallpaper(phone_model, content_list, out_file=None): """ phone_model - 手机型号 content_list - 内容 out_file - 输出文件 """ resolution = (0, 0) # 分辨率 if phone_model == 'iphone se2': resolution = (750, 1334) # 设置背景 if resolution != (0, 0): bg_img = Image.new('RGBA', resolution, '#fbedb2') # bg_im = cv2.cvtColor(np.asarray(bg_im), cv2.COLOR_RGB2BGR) else: print("don't have this version" ) return # 添加语句 # font = cv2.FONT_HERSHEY_DUPLEX # cv2设置字体 draw_text = ImageDraw.Draw(bg_img) # font = ImageFont.truetype('C:\Windows\Fonts\simhei.ttf', 30) # 设置字体,系统内置,也可下载,如自由字体 font = ImageFont.truetype(r'C:\Users\Administrator\AppData\Local\Microsoft\Windows\Fonts\千图小兔体.ttf', 30) i = 0 for content in content_list: # cv2.putText(bg_im, content, (100, 100), font, 5, (254, 67, 101)) # cv2.putText() 只能显示英文字符,中文会出现乱码问题, offset = 120 * i draw_text.text((100, 120 + offset), content, font=font, fill=(0, 0, 0)) i += 1 # 将包含字体的读取为cv2形式,以便添加图片 bg_img.save('./background.png') bg_img = cv2.imread('./background.png', cv2.IMREAD_UNCHANGED) os.remove('./background.png') # 添加图标 icon_img = cv2.imread('gold.png', cv2.IMREAD_UNCHANGED) white2transparent(icon_img) for j in range(1, len(content_list)+1): offset = 120 * j bg_img = merge_img(bg_img, icon_img, 66, offset) # 添加装饰 decorate_milktea_img = cv2.imread('milktea.png', cv2.IMREAD_UNCHANGED) decorate_fruit_img = cv2.imread('fruit.png', cv2.IMREAD_UNCHANGED) decorate_img_list = [decorate_milktea_img, decorate_fruit_img] for decorate_img in decorate_img_list: white2transparent(decorate_img) random_pos_x = random.randint(0,resolution[0]-300) random_pos_y = random.randint(740, resolution[1]-200) # 范围内的随机数 bg_img = merge_img(bg_img, decorate_img, random_pos_x, random_pos_y) # 保存图片 if out_file: cv2.imwrite('./wallpaper.png', bg_img) cv2.imshow('bgim', bg_img) cv2.waitKey(0) cv2.destroyAllWindows()if __name__ == '__main__': content_list = [ '天天开心', '心想事成' ] set_wallpaper('iphone se2', content_list, './wallpaper.png')效果
关于"怎么用python代码生成一张壁纸"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"怎么用python代码生成一张壁纸"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
图片
图像
代码
通道
叠加
代码生成
壁纸
生成
字体
宽度
背景
长度
像素
内容
形式
知识
位置
篇文章
背景图片
范围
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技金融
互联网金融科技创新
互联网科技大会
上海卓越科技 互联网
互联网科技英文翻译
科技类的互联网平台
无锡溥仪互联网科技有限公司
央行互联网金融科技公司
洛阳昕诺飞互联网科技有限公司
乌苏新华互联网科技做什么的
浙南科技城互联网大厦建设工程
华夏恒生互联网科技013171
企晟互联网信息科技有限公司
洛阳共同富裕互联网科技有限公司
中科明德北京互联网科技
高科技互联网套路
互联网科技股为什么大涨
神州科技互联网有限公司
科技互联网行业投资研究
易租星互联网科技有限公司
工业互联网科技新基建
互联网扶贫科技
智网互联网科技
唐信互联网科技
新浪科技互联网
万达互联网科技
互联网金融中的现代科技
华夏互联网科技业
佛山市拉法互联网科技有限公司
南通创西澳互联网科技有限公司