前言
当今移动应用市场竞争激烈,吸引用户的关键之一是具有吸引力的应用图标。每次UI小姐姐生成新的应用图标后,我们都需要图标做一些重命名和复制粘贴的繁琐操作。为了提高效率,我们可以使用Python编程语言来批量生成应用图标。本文将介绍如何使用Python来实现这一目标。
准备工作
在开始之前,确保你已经安装了Python和必要的库。我们将使用Pillow库来处理图像文件,所以你可以使用以下命令来安装它:
pip install Pillow
1. 收集图标素材
首先,需要准备一个高分辨率的应用图标设计,这将作为生成其他尺寸图标的基础。通常,我们使用一个正方形的图像,尺寸为 1024x1024 像素。
2. 编写Python脚本
要求
Android应用需要生成以下多个尺寸图标,放置在不同文件夹,为了适配谷歌手机,同时还需要生成圆形的图标
# android 尺寸
icon_size_android = {
"mipmap-xxxhdpi": 192,
"mipmap-xxhdpi": 144,
"mipmap-xhdpi": 96,
"mipmap-hdpi": 72,
"mipmap-mdpi": 48,
"mipmap-ldpi": 36,
}
iOS应用需要生成以下多个尺寸的图标,通过AppIcon.appiconset文件夹下的Contents.json文件配置
# ios尺寸
icon_size_ios = [29, 40, 57, 58, 60, 80, 87, 114, 120, 180, 1024]
配置路径
# 设计图路径
icon_path = "icon.png"
# Flutter项目路径
project_path = "/Users/alen/Aproject/flutter_project"
ios_icon_path = f"{project_path}/ios/Runner/Assets.xcassets/AppIcon.appiconset"
android_icon_path = f"{project_path}/android/app/src/main/res"
android_icon_name = "ic_launcher.png"
android_icon_round_name = "ic_launcher_round.png"
接下来,我们将编写一个Python脚本来生成不同分辨率和尺寸的应用图标。下面是一个示例脚本:
def gen_icon_android(input_image_path):
"""
生成android方形和圆形图标
"""
# 打开原始图片
input_image = Image.open(input_image_path)
# 创建图标文件夹并生成图标
for folder_name, size in icon_size_android.items():
# 生成对应文件夹
output_folder = os.path.join(android_icon_path, folder_name)
os.makedirs(output_folder, exist_ok=True)
# 方形图标处理:直接保存为对应尺寸
square_icon = input_image.resize((size, size))
square_icon_path = os.path.join(output_folder, android_icon_name)
square_icon.save(square_icon_path, 'PNG')
# 圆形图标处理:裁剪成圆形,再保存为对应尺寸
circular_icon = input_image.copy()
min_side = min(circular_icon.width, circular_icon.height)
circular_icon = circular_icon.crop((0, 0, min_side, min_side))
mask = Image.new("L", circular_icon.size, 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0, circular_icon.width, circular_icon.height), fill=255)
circular_icon = ImageOps.fit(circular_icon, mask.size, centering=(0.5, 0.5))
circular_icon.putalpha(mask)
circular_icon = circular_icon.resize((size, size))
circular_icon_path = os.path.join(output_folder, android_icon_round_name)
circular_icon.save(circular_icon_path, 'PNG')
input_image.close()
def gen_icon_ios(input_image_path):
"""
生成ios图标和各尺寸配置文件
"""
folder = ios_icon_path
clear_folder(folder)
copy_file("Contents.json", folder)
# 打开输入图片
img = Image.open(input_image_path)
# 生成不同尺寸的图片
for size in icon_size_ios:
output_image_path = os.path.join(folder, f"{size}.png")
resized_img = img.resize((size, size))
resized_img.save(output_image_path)
resized_img.close()
img.close()
3. 运行脚本
保存上述脚本为一个.py文件,然后在命令行中运行它:
python3 gen_icon.py