最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用python生成一張壁紙實(shí)例代碼

 更新時間:2022年02月09日 14:10:07   作者:橙橙小貍貓  
大家好,本篇文章主要講的是用python生成一張壁紙實(shí)例代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下

前言

之前在csdn上看見用python寫春聯(lián)的,這次突發(fā)奇想用python制作一張壁紙,其元素包括背景、文字、圖片。

知識點(diǎn) 用PIL創(chuàng)建一張純色背景Image.new;圖片上添加文字ImageDraw,cv2只能顯示英文;轉(zhuǎn)換圖片的透明度;圖片上疊加圖片;jpg與png的區(qū)別。

代碼

import os
from PIL import ImageFont, ImageDraw, Image
import cv2
import random

def white2transparent(img):
    """
    將白色部分設(shè)置為透明
    :param img: 需要修改的圖片
    :return: 修改后的圖片
    """
    # Image讀取形式----------------------------------------------
    # img = img.convert('RGBA')
    # img = img.convert("RGBA")  # 轉(zhuǎn)換格式,確保像素包含alpha通道
    # 加一個判斷,不是四通道就推出
    # width, height = img.size  # 長度和寬度
    # for i in range(0, width):  # 遍歷所有長度的點(diǎn)
    #     for j in range(0, height):  # 遍歷所有寬度的點(diǎn)
    #         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):  # 遍歷所有長度的點(diǎn)
        for j in range(0, height):  # 遍歷所有寬度的點(diǎn)
            if (img[i, j, 0], img[i, j, 1], img[i, j, 2]) == (255, 255, 255):
                img[i, j, 3] = 0
    return img


def merge_img(bg_img, target_img, x1, y1):
    """
    將圖片與背景圖片融合
    :param bg_img: 背景圖片,要求4通道
    :param target_img: 目標(biāo)圖片,要求四通道
    :param x1: target_img在bg_img的坐標(biāo),如果需要調(diào)節(jié)圖片大小,請在函數(shù)外resize
    :param y1:
    :return:
    """

    # 判斷jpg圖像是否已經(jīng)為4通道
    if bg_img.shape[2] == 3 or target_img.shape[2] == 3:
        print("merge image error, image must 4 channels.")
        return

    '''
    當(dāng)疊加圖像時,可能因?yàn)榀B加位置設(shè)置不當(dāng),導(dǎo)致png圖像的邊界超過背景jpg圖像,而程序報錯
    這里設(shè)定一系列疊加位置的限制,可以滿足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_img


def set_wallpaper(phone_model, content_list, out_file=None):
    """
        phone_model     - 手機(jī)型號
        content_list    - 內(nèi)容
        out_file        - 輸出文件

    """
    resolution = (0, 0)  # 分辨率
    if phone_model == 'iphone se2':
        resolution = (750, 1334)

    # 設(shè)置背景
    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設(shè)置字體
    draw_text = ImageDraw.Draw(bg_img)
    # font = ImageFont.truetype('C:\Windows\Fonts\simhei.ttf', 30) # 設(shè)置字體,系統(tǒng)內(nèi)置,也可下載,如自由字體
    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() 只能顯示英文字符,中文會出現(xiàn)亂碼問題,
        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')

    # 添加圖標(biāo)
    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)  # 范圍內(nèi)的隨機(jī)數(shù)
        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')
    

效果

在這里插入圖片描述

總結(jié)

到此這篇關(guān)于用python生成一張壁紙實(shí)例代碼的文章就介紹到這了,更多相關(guān)python生成壁紙內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Flask??請求鉤子的實(shí)現(xiàn)

    Flask??請求鉤子的實(shí)現(xiàn)

    這篇文章主要給大家分享了Flask請求鉤子的實(shí)現(xiàn),在客戶端和服務(wù)器交互的過程中,有些準(zhǔn)備工作或掃尾工作需要處理,比如:在請求開始時,建立數(shù)據(jù)庫連接;在請求開始時,根據(jù)需求進(jìn)行權(quán)限校驗(yàn);在請求結(jié)束時,指定數(shù)據(jù)的交互格式;下面來看看文章詳細(xì)介紹內(nèi)容吧
    2021-11-11
  • Django通過設(shè)置CORS解決跨域問題

    Django通過設(shè)置CORS解決跨域問題

    這篇文章主要介紹了Django 通過設(shè)置CORS解決跨域問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • python創(chuàng)建和刪除目錄的方法

    python創(chuàng)建和刪除目錄的方法

    這篇文章主要介紹了python創(chuàng)建和刪除目錄的方法,涉及Python操作目錄的相關(guān)技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-04-04
  • python對接ihuyi實(shí)現(xiàn)短信驗(yàn)證碼發(fā)送

    python對接ihuyi實(shí)現(xiàn)短信驗(yàn)證碼發(fā)送

    在本篇文章里小編給大家分享的是關(guān)于python對接ihuyi實(shí)現(xiàn)短信驗(yàn)證碼發(fā)送功能,需要的朋友們可以參考下。
    2020-05-05
  • python分布式庫celery處理大規(guī)模的任務(wù)并行化

    python分布式庫celery處理大規(guī)模的任務(wù)并行化

    Python中的分布式任務(wù)隊列時,Celery是一個備受推崇的工具,它是一個功能強(qiáng)大的分布式系統(tǒng),可用于處理大規(guī)模的任務(wù)并行化,本文將介紹Celery的基本概念、用法和示例代碼,幫助讀者更好地了解和使用這個庫
    2024-01-01
  • 利用python繪制笛卡爾直角坐標(biāo)系

    利用python繪制笛卡爾直角坐標(biāo)系

    這篇文章主要介紹了利用python繪制笛卡爾直角坐標(biāo)系,python繪圖主要用到matplotlib繪圖模塊,利用matplotlib模塊畫出上面的正弦函,需要的朋友可以參考一下
    2022-03-03
  • Python中使用ElementTree解析XML示例

    Python中使用ElementTree解析XML示例

    這篇文章主要介紹了Python中使用ElementTree解析XML示例,本文同時講解了XML基本概念介紹、XML幾種解析方法和ElementTree解析實(shí)例,需要的朋友可以參考下
    2015-06-06
  • Python3學(xué)習(xí)筆記之列表方法示例詳解

    Python3學(xué)習(xí)筆記之列表方法示例詳解

    Python3 列表 序列是Python中最基本的數(shù)據(jù)結(jié)構(gòu),下面這篇文章主要給大家介紹了關(guān)于Python3學(xué)習(xí)筆記之列表方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下。
    2017-10-10
  • 關(guān)于你不想知道的所有Python3 unicode特性

    關(guān)于你不想知道的所有Python3 unicode特性

    我的讀者知道我是一個喜歡痛罵Python3 unicode的人。這次也不例外。我將會告訴你用unicode有多痛苦和為什么我不能閉嘴。我花了兩周時間研究Python3,我需要發(fā)泄我的失望。在這些責(zé)罵中,仍然有有用的信息,因?yàn)樗涛覀內(nèi)绾蝸硖幚鞵ython3。如果沒有被我煩到,就讀一讀吧
    2014-11-11
  • OpenCV+face++實(shí)現(xiàn)實(shí)時人臉識別解鎖功能

    OpenCV+face++實(shí)現(xiàn)實(shí)時人臉識別解鎖功能

    這篇文章主要為大家詳細(xì)介紹了OpenCV+face++實(shí)現(xiàn)實(shí)時人臉識別解鎖功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評論

邓州市| 镇宁| 翼城县| 大理市| 平湖市| 腾冲县| 垦利县| 永城市| 漯河市| 平利县| 皮山县| 台湾省| 岳池县| 永城市| 黄山市| 五大连池市| 西充县| 确山县| 徐汇区| 县级市| 兴海县| 区。| 禄丰县| 龙岩市| 杭锦旗| 大庆市| 翁牛特旗| 顺平县| 南投县| 资溪县| 三都| 普定县| 舒兰市| 吉木萨尔县| 恩平市| 湘潭市| 峡江县| 石嘴山市| 星座| 阿拉尔市| 武强县|