当前位置: 代码网 > it编程>前端脚本>Python > python使用Pillow创建可自定义的图标生成器

python使用Pillow创建可自定义的图标生成器

2024年11月25日 Python 我要评论
在本篇博客中,我们将探讨如何使用 wxpython 和 pillow 库创建一个简单的图标生成器。用户可以通过该工具选择目标文件夹,并生成三种不同尺寸(16x16、48x48、128x128)的png

在本篇博客中,我们将探讨如何使用 wxpython 和 pillow 库创建一个简单的图标生成器。用户可以通过该工具选择目标文件夹,并生成三种不同尺寸(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))

        # 创建面板
        panel = wx.panel(self)

        # 创建控件
        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):
        # 创建空白图像,背景色为白色
        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} 已生成!")

if __name__ == "__main__":
    app = wx.app(false)
    icongenerator(none, title="图标生成器")
    app.mainloop()

项目目标

我们希望创建一个桌面应用程序,用户能够:

选择目标文件夹。

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

以 png 格式保存图标,命名为 icon16.png、icon48.png 和 icon128.png。

使用简单的框架和对角线来模拟截图框的效果,作为图标的主题。

所需的库

为了实现这个功能,我们将使用以下 python 库:

wxpython:这是一个跨平台的 gui 库,用于创建图形用户界面(gui)。

pillow:这是 python 中处理图像的库,用于绘制和保存图标。

首先,确保你的环境中已经安装了这两个库。可以通过以下命令安装:

pip install wxpython pillow

设计思路

我们的图标将有一个简单的设计,包含:

一个框架,模拟截图工具的选择区域。

两条交叉的线,模拟截图区域的边界。

图标将以三种不同的尺寸生成:16x16、48x48 和 128x128,以确保适配不同的应用场景,如应用程序图标、任务栏图标等。

步骤 1:创建 wxpython 窗口

我们首先创建一个简单的 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))

        # 创建面板
        panel = wx.panel(self)

        # 创建控件
        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):
        # 创建空白图像,背景色为白色
        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} 已生成!")

步骤 2:创建图标并保存为 png

图标的生成过程通过 pillow 库完成。我们将创建一个空白的图像,并通过 imagedraw 类绘制框架和交叉线,模拟截图区域。每个图标会根据不同的尺寸保存为 png 格式。

def create_icon(self, size, file_path):
    # 创建空白图像,背景色为白色
    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 文件,并运行程序。你将看到一个简单的窗口,用户可以选择目标文件夹并点击“生成图标”按钮。当点击按钮后,程序将根据选择的文件夹生成三个不同尺寸的图标文件(icon16.png、icon48.png、icon128.png)。

结果与展示

假设你选择的目标文件夹路径是 c:/users/yourusername/desktop/icons,运行程序后,生成的图标文件将保存在该目录下:

icon16.png:16x16 像素

icon48.png:48x48 像素

icon128.png:128x128 像素

这些图标将用于各种应用场景,如在应用程序中作为程序图标,或者作为系统托盘图标等。

运行结果

本项目展示了如何结合 wxpython 和 pillow 创建一个简单的图标生成器。用户可以通过 gui 选择目标文件夹,并生成不同尺寸的 png 格式图标。这种工具对于需要生成不同尺寸图标的开发者非常有用,尤其是在需要图标适配多种设备和分辨率时。

以上就是python使用pillow创建可自定义的图标生成器的详细内容,更多关于python pillow图标生成器的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com