亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python使用Pillow創(chuàng)建可自定義的圖標(biāo)生成器

 更新時(shí)間:2024年11月14日 08:57:02   作者:winfredzhang  
在本篇博客中,我們將探討如何使用?wxPython?和?Pillow?庫(kù)創(chuàng)建一個(gè)簡(jiǎn)單的圖標(biāo)生成器,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

在本篇博客中,我們將探討如何使用 wxPython 和 Pillow 庫(kù)創(chuàng)建一個(gè)簡(jiǎn)單的圖標(biāo)生成器。用戶(hù)可以通過(guò)該工具選擇目標(biāo)文件夾,并生成三種不同尺寸(16x16、48x48、128x128)的PNG格式圖標(biāo)文件。圖標(biāo)將采用“截圖框”的主題,通過(guò)圖形化方式展示如何快速生成自定義圖標(biāo)。

C:\pythoncode\new\createicon3size.py

全部代碼

import wx
from PIL import Image, ImageDraw
import os

class IconGenerator(wx.Frame):
    def __init__(self, parent, title):
        super().__init__(parent, title=title, size=(600, 400))

        # 創(chuàng)建面板
        panel = wx.Panel(self)

        # 創(chuàng)建控件
        self.folder_picker = wx.DirPickerCtrl(panel, path="", size=(500, -1), pos=(50, 50))
        self.generate_button = wx.Button(panel, label="生成圖標(biāo)", pos=(50, 150))

        # 綁定事件
        self.generate_button.Bind(wx.EVT_BUTTON, self.on_generate)

        self.Show()

    def on_generate(self, event):
        # 獲取目標(biāo)文件夾路徑
        target_folder = self.folder_picker.GetPath()
        if not target_folder:
            wx.MessageBox("請(qǐng)選擇目標(biāo)文件夾", "錯(cuò)誤", wx.ICON_ERROR)
            return
        
        # 生成圖標(biāo)并保存為 PNG 文件
        self.generate_icons(target_folder)

    def generate_icons(self, target_folder):
        sizes = [16, 48, 128]
        for size in sizes:
            file_path = os.path.join(target_folder, f"icon{size}.png")
            self.create_icon(size, file_path)
        
        wx.MessageBox("圖標(biāo)已成功生成", "成功", wx.ICON_INFORMATION)

    def create_icon(self, size, file_path):
        # 創(chuàng)建空白圖像,背景色為白色
        img = Image.new('RGBA', (size, size), (255, 255, 255, 0))
        draw = ImageDraw.Draw(img)
        
        # 在圖標(biāo)上繪制一個(gè)簡(jiǎn)單的框架,模擬截圖效果
        border_thickness = size // 10  # 邊框厚度與圖標(biāo)大小成比例
        
        # 繪制外框
        draw.rectangle([border_thickness, border_thickness, size-border_thickness, size-border_thickness], outline="black", width=border_thickness)
        
        # 繪制截取區(qū)域的對(duì)角線(xiàn)(模擬截圖效果)
        line_offset = size // 4
        draw.line([line_offset, line_offset, size-line_offset, size-line_offset], fill="black", width=2)
        draw.line([line_offset, size-line_offset, size-line_offset, line_offset], fill="black", width=2)
        
        # 保存為 PNG 文件
        img.save(file_path, format="PNG")
        print(f"圖標(biāo) {file_path} 已生成!")

if __name__ == "__main__":
    app = wx.App(False)
    IconGenerator(None, title="圖標(biāo)生成器")
    app.MainLoop()

項(xiàng)目目標(biāo)

我們希望創(chuàng)建一個(gè)桌面應(yīng)用程序,用戶(hù)能夠:

選擇目標(biāo)文件夾。

生成不同尺寸的圖標(biāo)(16x16、48x48、128x128)。

以 PNG 格式保存圖標(biāo),命名為 icon16.png、icon48.png 和 icon128.png。

使用簡(jiǎn)單的框架和對(duì)角線(xiàn)來(lái)模擬截圖框的效果,作為圖標(biāo)的主題。

所需的庫(kù)

為了實(shí)現(xiàn)這個(gè)功能,我們將使用以下 Python 庫(kù):

wxPython:這是一個(gè)跨平臺(tái)的 GUI 庫(kù),用于創(chuàng)建圖形用戶(hù)界面(GUI)。

Pillow:這是 Python 中處理圖像的庫(kù),用于繪制和保存圖標(biāo)。

首先,確保你的環(huán)境中已經(jīng)安裝了這兩個(gè)庫(kù)??梢酝ㄟ^(guò)以下命令安裝:

pip install wxPython Pillow

設(shè)計(jì)思路

我們的圖標(biāo)將有一個(gè)簡(jiǎn)單的設(shè)計(jì),包含:

一個(gè)框架,模擬截圖工具的選擇區(qū)域。

兩條交叉的線(xiàn),模擬截圖區(qū)域的邊界。

圖標(biāo)將以三種不同的尺寸生成:16x16、48x48 和 128x128,以確保適配不同的應(yīng)用場(chǎng)景,如應(yīng)用程序圖標(biāo)、任務(wù)欄圖標(biāo)等。

步驟 1:創(chuàng)建 wxPython 窗口

我們首先創(chuàng)建一個(gè)簡(jiǎn)單的 wxPython 窗口,包含:

一個(gè)文件夾選擇控件,讓用戶(hù)選擇圖標(biāo)保存的目標(biāo)文件夾。

一個(gè)按鈕,當(dāng)點(diǎn)擊按鈕時(shí)生成圖標(biāo)。

import wx
from PIL import Image, ImageDraw
import os

class IconGenerator(wx.Frame):
    def __init__(self, parent, title):
        super().__init__(parent, title=title, size=(600, 400))

        # 創(chuàng)建面板
        panel = wx.Panel(self)

        # 創(chuàng)建控件
        self.folder_picker = wx.DirPickerCtrl(panel, path="", size=(500, -1), pos=(50, 50))
        self.generate_button = wx.Button(panel, label="生成圖標(biāo)", pos=(50, 150))

        # 綁定事件
        self.generate_button.Bind(wx.EVT_BUTTON, self.on_generate)

        self.Show()

    def on_generate(self, event):
        # 獲取目標(biāo)文件夾路徑
        target_folder = self.folder_picker.GetPath()
        if not target_folder:
            wx.MessageBox("請(qǐng)選擇目標(biāo)文件夾", "錯(cuò)誤", wx.ICON_ERROR)
            return
        
        # 生成圖標(biāo)并保存為 PNG 文件
        self.generate_icons(target_folder)

    def generate_icons(self, target_folder):
        sizes = [16, 48, 128]
        for size in sizes:
            file_path = os.path.join(target_folder, f"icon{size}.png")
            self.create_icon(size, file_path)
        
        wx.MessageBox("圖標(biāo)已成功生成", "成功", wx.ICON_INFORMATION)

    def create_icon(self, size, file_path):
        # 創(chuàng)建空白圖像,背景色為白色
        img = Image.new('RGBA', (size, size), (255, 255, 255, 0))
        draw = ImageDraw.Draw(img)
        
        # 在圖標(biāo)上繪制一個(gè)簡(jiǎn)單的框架,模擬截圖效果
        border_thickness = size // 10  # 邊框厚度與圖標(biāo)大小成比例
        
        # 繪制外框
        draw.rectangle([border_thickness, border_thickness, size-border_thickness, size-border_thickness], outline="black", width=border_thickness)
        
        # 繪制截取區(qū)域的對(duì)角線(xiàn)(模擬截圖效果)
        line_offset = size // 4
        draw.line([line_offset, line_offset, size-line_offset, size-line_offset], fill="black", width=2)
        draw.line([line_offset, size-line_offset, size-line_offset, line_offset], fill="black", width=2)
        
        # 保存為 PNG 文件
        img.save(file_path, format="PNG")
        print(f"圖標(biāo) {file_path} 已生成!")

步驟 2:創(chuàng)建圖標(biāo)并保存為 PNG

圖標(biāo)的生成過(guò)程通過(guò) Pillow 庫(kù)完成。我們將創(chuàng)建一個(gè)空白的圖像,并通過(guò) ImageDraw 類(lèi)繪制框架和交叉線(xiàn),模擬截圖區(qū)域。每個(gè)圖標(biāo)會(huì)根據(jù)不同的尺寸保存為 PNG 格式。

def create_icon(self, size, file_path):
    # 創(chuàng)建空白圖像,背景色為白色
    img = Image.new('RGBA', (size, size), (255, 255, 255, 0))
    draw = ImageDraw.Draw(img)
    
    # 繪制外框
    border_thickness = size // 10
    draw.rectangle([border_thickness, border_thickness, size-border_thickness, size-border_thickness], outline="black", width=border_thickness)
    
    # 繪制對(duì)角線(xiàn),模擬截圖效果
    line_offset = size // 4
    draw.line([line_offset, line_offset, size-line_offset, size-line_offset], fill="black", width=2)
    draw.line([line_offset, size-line_offset, size-line_offset, line_offset], fill="black", width=2)
    
    # 保存為 PNG 文件
    img.save(file_path, format="PNG")
    print(f"圖標(biāo) {file_path} 已生成!")

步驟 3:保存圖標(biāo)并顯示消息

每個(gè)圖標(biāo)將以 PNG 格式保存到用戶(hù)選擇的目標(biāo)文件夾。完成后,程序會(huì)彈出一個(gè)消息框,提示用戶(hù)圖標(biāo)已成功生成。

步驟 4:運(yùn)行程序

將以上代碼保存為一個(gè) Python 文件,并運(yùn)行程序。你將看到一個(gè)簡(jiǎn)單的窗口,用戶(hù)可以選擇目標(biāo)文件夾并點(diǎn)擊“生成圖標(biāo)”按鈕。當(dāng)點(diǎn)擊按鈕后,程序?qū)⒏鶕?jù)選擇的文件夾生成三個(gè)不同尺寸的圖標(biāo)文件(icon16.png、icon48.png、icon128.png)。

結(jié)果與展示

假設(shè)你選擇的目標(biāo)文件夾路徑是 C:/Users/YourUsername/Desktop/icons,運(yùn)行程序后,生成的圖標(biāo)文件將保存在該目錄下:

icon16.png:16x16 像素

icon48.png:48x48 像素

icon128.png:128x128 像素

這些圖標(biāo)將用于各種應(yīng)用場(chǎng)景,如在應(yīng)用程序中作為程序圖標(biāo),或者作為系統(tǒng)托盤(pán)圖標(biāo)等。

運(yùn)行結(jié)果

本項(xiàng)目展示了如何結(jié)合 wxPython 和 Pillow 創(chuàng)建一個(gè)簡(jiǎn)單的圖標(biāo)生成器。用戶(hù)可以通過(guò) GUI 選擇目標(biāo)文件夾,并生成不同尺寸的 PNG 格式圖標(biāo)。這種工具對(duì)于需要生成不同尺寸圖標(biāo)的開(kāi)發(fā)者非常有用,尤其是在需要圖標(biāo)適配多種設(shè)備和分辨率時(shí)。

以上就是python使用Pillow創(chuàng)建可自定義的圖標(biāo)生成器的詳細(xì)內(nèi)容,更多關(guān)于python Pillow圖標(biāo)生成器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python實(shí)現(xiàn)視頻分幀效果

    python實(shí)現(xiàn)視頻分幀效果

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)視頻分幀效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Python webdriver.Chrome()的使用解讀

    Python webdriver.Chrome()的使用解讀

    這篇文章主要介紹了Python webdriver.Chrome()的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)基本原理

    Python深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)基本原理

    人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,簡(jiǎn)寫(xiě)為ANNs)也簡(jiǎn)稱(chēng)為神經(jīng)網(wǎng)絡(luò)(NNs)或稱(chēng)作連接模型(Connection Model),它是一種模仿動(dòng)物神經(jīng)網(wǎng)絡(luò)行為特征,進(jìn)行分布式并行信息處理的算法數(shù)學(xué)模型
    2021-10-10
  • 簡(jiǎn)單了解Django應(yīng)用app及分布式路由

    簡(jiǎn)單了解Django應(yīng)用app及分布式路由

    這篇文章主要介紹了簡(jiǎn)單了解Django應(yīng)用app及分布式路由,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 刪除目錄下相同文件的python代碼(逐級(jí)優(yōu)化)

    刪除目錄下相同文件的python代碼(逐級(jí)優(yōu)化)

    讓我們來(lái)分析一下這個(gè)問(wèn)題:首先,文件個(gè)數(shù)非常多,手工查找是不現(xiàn)實(shí)的,再說(shuō),單憑我們?nèi)庋?,在幾千張圖片里面找到完全相同的難度也是很大的
    2012-05-05
  • Python?numpy中的ndarray介紹

    Python?numpy中的ndarray介紹

    這篇文章主要介紹了Python?numpy中的ndarray,numpy?模塊通常被稱(chēng)為?matplotlib?模塊伴侶,numpy可以方便快捷地對(duì)大量數(shù)據(jù)進(jìn)行科學(xué)計(jì)算,為matplotlib?繪制圖表提供數(shù)據(jù),下面來(lái)看看文章內(nèi)容的詳細(xì)介紹吧
    2022-01-01
  • TensorFlow2.X使用圖片制作簡(jiǎn)單的數(shù)據(jù)集訓(xùn)練模型

    TensorFlow2.X使用圖片制作簡(jiǎn)單的數(shù)據(jù)集訓(xùn)練模型

    這篇文章主要介紹了TensorFlow2.X使用圖片制作簡(jiǎn)單的數(shù)據(jù)集訓(xùn)練模型,本文通過(guò)截圖實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 基于Python構(gòu)建深度學(xué)習(xí)圖像分類(lèi)模型

    基于Python構(gòu)建深度學(xué)習(xí)圖像分類(lèi)模型

    在人工智能的浪潮中,圖像分類(lèi)作為計(jì)算機(jī)視覺(jué)領(lǐng)域的基礎(chǔ)任務(wù)之一,一直備受關(guān)注,本文將介紹如何使用Python和PyTorch框架,構(gòu)建一個(gè)簡(jiǎn)單的深度學(xué)習(xí)圖像分類(lèi)模型,感興趣的可以了解下
    2024-12-12
  • Python3獲取拉勾網(wǎng)招聘信息的方法實(shí)例

    Python3獲取拉勾網(wǎng)招聘信息的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Python3獲取拉勾網(wǎng)招聘信息的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 基于django micro搭建網(wǎng)站實(shí)現(xiàn)加水印功能

    基于django micro搭建網(wǎng)站實(shí)現(xiàn)加水印功能

    這篇文章主要介紹了基于django micro搭建網(wǎng)站實(shí)現(xiàn)加水印功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論