iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么用python代码生成一张壁纸
  • 298
分享到

怎么用python代码生成一张壁纸

2023-06-29 03:06:43 298人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍了怎么用python代码生成一张壁纸的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Python代码生成一张壁纸文章都会有所收获,下面我们一起来看看吧。代码import osfro

这篇文章主要介绍了怎么用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代码生成一张壁纸”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么用python代码生成一张壁纸”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网Python频道。

--结束END--

本文标题: 怎么用python代码生成一张壁纸

本文链接: https://www.lsjlt.com/news/322142.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用python代码生成一张壁纸
    这篇文章主要介绍了怎么用python代码生成一张壁纸的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用python代码生成一张壁纸文章都会有所收获,下面我们一起来看看吧。代码import osfro...
    99+
    2023-06-29
  • 用python生成一张壁纸实例代码
    目录前言代码效果总结前言 之前在csdn上看见用python写春联的,这次突发奇想用python制作一张壁纸,其元素包括背景、文字、图片。 知识点 用PIL创建一张纯色背景Image...
    99+
    2024-04-02
  • 用python爬取电脑壁纸实例代码
    目录前言一、用到的工具二、爬取步骤与过程1.用到的库2.解析代码3.最后上全部的代码啦总结前言        &...
    99+
    2024-04-02
  • 怎么用Python代码爬取王者全套皮肤壁纸
    本篇文章给大家分享的是有关怎么用Python代码爬取王者全套皮肤壁纸,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。相信大家都玩过王者荣耀吧,资深玩家绝对买过皮肤,不得不夸王者荣...
    99+
    2023-06-02
  • python怎么实现自动生成C++代码的代码生成器
    这篇文章主要讲解了“python怎么实现自动生成C++代码的代码生成器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python怎么实现自动生成C++代码的代码生成器”吧!遇到的问题工作中遇...
    99+
    2023-07-02
  • js使用Canvas将多张图片合并成一张的实现代码
    解决方案 function mergeImgs(list) { const imgDom = document.createElement('img') document.b...
    99+
    2024-04-02
  • Python怎么利用多线程爬取LOL高清壁纸
    这篇“Python怎么利用多线程爬取LOL高清壁纸”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python怎么利用多线程爬...
    99+
    2023-07-02
  • SQL中怎么生成一张日期维度表
    今天就跟大家聊聊有关SQL中怎么生成一张日期维度表,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。创建表结构我们根据常见的日历表来创建一个含有年,月,...
    99+
    2024-04-02
  • 怎么用一行代码生成Tableau可视化图表
    这篇文章主要介绍“怎么用一行代码生成Tableau可视化图表”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用一行代码生成Tableau可视化图表”文章能帮助大家解决问题。PyGWalker接下来...
    99+
    2023-07-05
  • 怎么在python中利用多线程爬取网站壁纸
    本篇文章给大家分享的是有关怎么在python中利用多线程爬取网站壁纸,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python主要用来做什么Python主要应用于:1、Web开...
    99+
    2023-06-06
  • Python一行代码实现生成和读取二维码
    目录生成二维码读取二维码补充总结二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的、黑白相间的、记录数据符号信息的图形。 二维码被称为快速响应码,可能看起来很简单,但它...
    99+
    2024-04-02
  • Flutter ChatGPT代码生成器怎么使用
    本篇内容主要讲解“Flutter ChatGPT代码生成器怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Flutter ChatGPT代码生成器怎么使用”吧!Chat...
    99+
    2023-07-05
  • 怎么用java代码生成柱状图
    要用Java代码生成柱状图,可以使用第三方库JFreeChart。以下是一个简单的示例代码,演示如何使用JFreeChart生成柱状...
    99+
    2023-10-23
    java
  • Java基础之教你怎么用代码一键生成POJO
    目录一、前言二、使用三、代码用法解释四、完整代码一、前言 在写SpringBoot项目,有时候设计到的表有几十上百张,如果要一个一个手动创建JavaBean以及对应的mapper类的...
    99+
    2024-04-02
  • html颜色代码生成器怎么用
    今天小编给大家分享一下html颜色代码生成器怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2024-04-02
  • mybatis plus代码生成工具怎么用
    这篇文章给大家分享的是有关mybatis plus代码生成工具怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言:原本想使用AutoGenerator 是 MyBatis-Plus 的官方代码生成器&nbs...
    99+
    2023-06-14
  • 怎么用SQL生成一张带农历的日期维度表
    本篇内容介绍了“怎么用SQL生成一张带农历的日期维度表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!创建农...
    99+
    2024-04-02
  • 使用Python怎么生成一个二维码并解析
    这篇文章给大家介绍使用Python怎么生成一个二维码并解析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。生成二维码生成二维码的话,python有两个第三方模块:qrcode和MyQR可以帮我我们生成二维码,下面来看一下...
    99+
    2023-06-08
  • 只写Python一遍代码,就可以同时生成
    前言: 用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择 我们使用kivy开发安卓APP,Kivy是一套专门用于跨平台快速应用开发的开源框架,使用Python和Cython编写,对于多点触控有着非常良好的支持,不仅...
    99+
    2023-01-30
    一遍 就可以 只写
  • Python生成器与迭代器怎么用
    这篇文章给大家分享的是有关Python生成器与迭代器怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、生成器现在可以通过生成器来直接创建一个列表,但是由于内存的限制,列表的容量肯定是有限的,如果我们需要一个...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作