使用python脚本切图制作CCScale9Sprite(点九图)

很多时候美术给的背景图都是一张大图,直接用很浪费资源

下面使用脚本把图片四个角截取合成一张小图,脚本还有很多可以改进地方,现在勉强处于能用转态

需要安装pillow

pip install pillow

# -- coding: UTF-8 --
from PIL import Image
import argparse
import sys

parser = argparse.ArgumentParser()
parser.add_argument("file", help="图片路径全名",type=str)
parser.add_argument('pixel', help="想要截取的宽高像素值",type=int)
args = parser.parse_args()

file = args.file
pixel = args.pixel

# 将图片四个角切出
def cut_image(file_path, target_width):
    image = Image.open(file_path)
    width, height = image.size
    if min(width, height) / 2 < target_width:
        print('你想截取的像素太大')
        return []
    # print(width, height)
    box_list = []
    box_list.append((0, 0, target_width, target_width))#左,上,右,下
    box_list.append((width - target_width,0, width, target_width))
    box_list.append((0,height - target_width, target_width, height))
    box_list.append((width - target_width,height - target_width, width, height))
    image_list = [image.crop(box) for box in box_list]
    return image_list
# 复制左边两个角到右边, 针对原图切四角不对齐问题
def transpose_image(image_list):
    images = []
    images.append(image_list[0])
    images.append(image_list[0].transpose(Image.FLIP_LEFT_RIGHT))
    images.append(image_list[2])
    images.append(image_list[2].transpose(Image.FLIP_LEFT_RIGHT))
    return images
#合并四个角保存图片
def save_images(image_list, target_width, file_path):
    index = 0
    coord = []
    coord.append((0,0))
    coord.append((target_width,0))
    coord.append((0,target_width))
    coord.append((target_width,target_width))
    toImage = Image.new('RGBA',(target_width*2, target_width*2))
    for image in image_list:
        toImage.paste(image, coord[index])
        index += 1
    toImage.save(file_path + '.out.png', 'PNG')
    Image.open(file_path + '.out.png').show()
#
if __name__ == '__main__':
    try:
        print('''
### author: alpha
### blog: www.alphayan.cn
        ''')
        image_list = cut_image(file, pixel)
        if len(image_list) >= 4:
            image_list = transpose_image(image_list)
            save_images(image_list, pixel, file)
    except:
        print('usage: python '+ sys.argv[0] + ' file_path pixel \nfile_path: 图片文件路径 \npixel: 要截取的宽高')

 

《使用python脚本切图制作CCScale9Sprite(点九图)》
原图
《使用python脚本切图制作CCScale9Sprite(点九图)》
切割以后

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Are you human? Click the Pineapple...