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

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

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

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

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="生成圖標", pos=(50, 150))

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

        self.Show()

    def on_generate(self, event):
        # 獲取目標文件夾路徑
        target_folder = self.folder_picker.GetPath()
        if not target_folder:
            wx.MessageBox("請選擇目標文件夾", "錯誤", wx.ICON_ERROR)
            return
        
        # 生成圖標并保存為 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("圖標已成功生成", "成功", 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)
        
        # 在圖標上繪制一個簡單的框架,模擬截圖效果
        border_thickness = size // 10  # 邊框厚度與圖標大小成比例
        
        # 繪制外框
        draw.rectangle([border_thickness, border_thickness, size-border_thickness, size-border_thickness], outline="black", width=border_thickness)
        
        # 繪制截取區(qū)域的對角線(模擬截圖效果)
        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"圖標 {file_path} 已生成!")

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

項目目標

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

選擇目標文件夾。

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

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

使用簡單的框架和對角線來模擬截圖框的效果,作為圖標的主題。

所需的庫

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

wxPython:這是一個跨平臺的 GUI 庫,用于創(chuàng)建圖形用戶界面(GUI)。

Pillow:這是 Python 中處理圖像的庫,用于繪制和保存圖標。

首先,確保你的環(huán)境中已經(jīng)安裝了這兩個庫。可以通過以下命令安裝:

pip install wxPython Pillow

設(shè)計思路

我們的圖標將有一個簡單的設(shè)計,包含:

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

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

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

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

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

一個文件夾選擇控件,讓用戶選擇圖標保存的目標文件夾。

一個按鈕,當點擊按鈕時生成圖標。

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="生成圖標", pos=(50, 150))

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

        self.Show()

    def on_generate(self, event):
        # 獲取目標文件夾路徑
        target_folder = self.folder_picker.GetPath()
        if not target_folder:
            wx.MessageBox("請選擇目標文件夾", "錯誤", wx.ICON_ERROR)
            return
        
        # 生成圖標并保存為 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("圖標已成功生成", "成功", 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)
        
        # 在圖標上繪制一個簡單的框架,模擬截圖效果
        border_thickness = size // 10  # 邊框厚度與圖標大小成比例
        
        # 繪制外框
        draw.rectangle([border_thickness, border_thickness, size-border_thickness, size-border_thickness], outline="black", width=border_thickness)
        
        # 繪制截取區(qū)域的對角線(模擬截圖效果)
        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"圖標 {file_path} 已生成!")

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

圖標的生成過程通過 Pillow 庫完成。我們將創(chuàng)建一個空白的圖像,并通過 ImageDraw 類繪制框架和交叉線,模擬截圖區(qū)域。每個圖標會根據(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)
    
    # 繪制對角線,模擬截圖效果
    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"圖標 {file_path} 已生成!")

步驟 3:保存圖標并顯示消息

每個圖標將以 PNG 格式保存到用戶選擇的目標文件夾。完成后,程序會彈出一個消息框,提示用戶圖標已成功生成。

步驟 4:運行程序

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

結(jié)果與展示

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

icon16.png:16x16 像素

icon48.png:48x48 像素

icon128.png:128x128 像素

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

運行結(jié)果

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

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

相關(guān)文章

  • Python?pygame繪制游戲圖像

    Python?pygame繪制游戲圖像

    這篇文章主要介紹了Python?pygame繪制游戲圖像,文章圍繞主題展開pygame模塊完成飛機大戰(zhàn)游戲的實戰(zhàn)開發(fā)的案例詳情,需要的朋友可以參考一下
    2022-08-08
  • 一文搞懂python 中的迭代器和生成器

    一文搞懂python 中的迭代器和生成器

    這篇文章主要介紹了python 中的迭代器和生成器簡單介紹,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • Django與DRF結(jié)合的全局異常處理方案詳解

    Django與DRF結(jié)合的全局異常處理方案詳解

    這篇文章主要為大家詳細介紹了Django與DRF結(jié)合的全局異常處理方案,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Python多種場景下實現(xiàn)CSV轉(zhuǎn)換為Excel文件

    Python多種場景下實現(xiàn)CSV轉(zhuǎn)換為Excel文件

    在數(shù)據(jù)處理和分析工作流程中,將 CSV 文件轉(zhuǎn)換為 Excel 格式是一項常見且實用的需求,本文將深入探討如何使用 Python 實現(xiàn)多種場景下的 CSV 到 Excel 轉(zhuǎn)換功能,感興趣的可以了解下
    2026-04-04
  • matplotlib教程——強大的python作圖工具庫

    matplotlib教程——強大的python作圖工具庫

    這篇文章主要介紹了python matplotlib的相關(guān)資料,幫助大家更好的利用python matplotlib庫繪制圖表,感興趣的朋友可以了解下
    2020-10-10
  • Python Beautiful Soup模塊使用教程詳解

    Python Beautiful Soup模塊使用教程詳解

    Beautiful Soup 簡稱 BS4(其中 4 表示版本號)是一個 Python 中常用的頁面解析庫,它可以從 HTML 或 XML 文檔中快速地提取指定的數(shù)據(jù),這篇文章主要介紹了Python Beautiful Soup模塊的使用
    2023-02-02
  • python應(yīng)用程序在windows下不出現(xiàn)cmd窗口的辦法

    python應(yīng)用程序在windows下不出現(xiàn)cmd窗口的辦法

    這篇文章主要介紹了python應(yīng)用程序在windows下不出現(xiàn)cmd窗口的辦法,適用于python寫的GTK程序并用py2exe編譯的情況下,需要的朋友可以參考下
    2014-05-05
  • python實現(xiàn)俄羅斯方塊游戲

    python實現(xiàn)俄羅斯方塊游戲

    這篇文章主要為大家介紹了python實現(xiàn)俄羅斯方塊游戲的詳細代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 使用GPT-3訓(xùn)練垃圾短信分類器示例詳解

    使用GPT-3訓(xùn)練垃圾短信分類器示例詳解

    這篇文章主要為大家介紹了使用GPT-3訓(xùn)練垃圾短信分類器示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • python查找重復(fù)圖片并刪除(圖片去重)

    python查找重復(fù)圖片并刪除(圖片去重)

    這篇文章主要為大家詳細介紹了python查找重復(fù)圖片并刪除,識別不同尺寸大小一致的圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07

最新評論

沙洋县| 甘南县| 浮梁县| 临朐县| 铜陵市| 林甸县| 额尔古纳市| 吉安市| 维西| 星座| 公安县| 杭州市| 包头市| 左贡县| 卫辉市| 扶沟县| 庆阳市| 孟村| 锡林郭勒盟| 昆山市| 囊谦县| 手游| 兰州市| 云浮市| 东源县| 英超| 五莲县| 普洱| 东乌珠穆沁旗| 泸定县| 孝义市| 无锡市| 威海市| 昭通市| 罗平县| 澳门| 芜湖县| 开江县| 和政县| 丰都县| 建德市|