使用python脚本生成iOS的2x、3x png图片

如何使用Python脚本生成iOS开发中的二倍图生成一倍图+三倍图。

配置环境

  1. 安装Python3。
  2. 安装 PIL,也就是 Pillow,如果没有下载的话,可以通过 pip 进行下载 pip3 install Pillow
  3. 将原始二倍图片放入指定的文件夹。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# python3

from PIL import Image
import glob
import os, sys

# 扩展图片为1、2、3倍图
def scale_image(file_name,file_type):
ori_img = Image.open(file_name + '.' + file_type)

#一倍图
new_img = ori_img.resize((int(ori_img.width/2),int(ori_img.height/2)),Image.BILINEAR)
new_img.save(file_name + '@1x.' + file_type)

#三倍图
new_img = ori_img.resize((int(ori_img.width*1.5),int(ori_img.height*1.5)),Image.BILINEAR)
new_img.save(file_name + '@3x.' + file_type)

#二倍图重命名
try:
os.rename(file_name + '.' + file_type,file_name + '@2x.' + file_type)
except Exception:
print('重命名发生错误')
else:
pass
finally:
pass

# 是否是需要扩展的图片
def is_normal_image(file_name):
ignore_string = ['@1x','@2x','@3x']

# 如果自带@1x,@2x,@3x,则不需要进行扩展
for name in ignore_string:
if name in file_name:
return False

return True

current_path = os.path.dirname(__file__)
png_files = glob.glob(current_path + "/*.png")
for img_file in png_files :
file_name = img_file[:-4]
if is_normal_image(file_name):
scale_image(file_name,'png')
else :
print(file_name)

使用

将此脚本放入二倍图片同级目录的文件夹中,执行此脚本。

思路

  1. 主要目的是缩放图片,所以需要使用PIL中的 resize 方法,将图片大小进行缩放,Image.BILINEAR代表用的是哪种算法;
  2. 判断文件夹中的图片是否已经缩放过了,原理是根据缩放过的会含有@1x,@2x,@3x的字样,所以对包含这种名字的图片不进行处理即可;
  3. 遍历文件夹,并获得所有的图片,这里使用glob.glob()方法获取所有符合要求的图片。(在这里就只找.png格式的图片)