之前就写过:
[Python] - from PIL import Image
- import os, sys, time
- # pyinstaller.exe -F -w ./image2ico.py -i ./image2ico.ico"
- sizes = [(32, 32), (64, 64), (128, 128), (256, 256)]
- def main():
- sizeStr = " 输出文件包含 "
- for size in sizes:
- sizeStr += f"{size[0]}x{size[1]} "
- sizeStr += "分辨率。"
- print("\n|=== 常用图像格式转换到ICO图标文件 V1.1 By JARK006 ====|\n")
- print(" 当图片宽高不一致时,将居中切割为正方形。")
- print(sizeStr)
- print("\n|========================================================|\n")
- if len(sys.argv) == 2 and os.path.exists(sys.argv[1]):
- filePath = sys.argv[1]
- else:
- filePath = input("请输入文件路径,或者把图片拖进来回车:")
- filePath = filePath.replace('"', "").replace("'", "")
- if not os.path.exists(filePath):
- print("文件路径错误!!!")
- time.sleep(3)
- exit(-1)
- try:
- image = Image.open(filePath)
- except:
- print("文件格式不支持!!!")
- print("请输入正确的图像文件,或者受支持的图像格式。")
- time.sleep(3)
- exit(-1)
- if image.size[0] != image.size[1]:
- offset = abs(image.size[0] - image.size[1]) / 2
- # 居中切割正方形
- if image.size[0] > image.size[1]:
- image = image.crop((offset, 0, offset + image.size[1], image.size[1]))
- else:
- image = image.crop((0, offset, image.size[0], offset + image.size[0]))
- fileName, fileExt = os.path.splitext(filePath)
- newFileName = fileName + ".ico"
- image.resize((256, 256)).save(
- newFileName, format="ICO", sizes=sizes
- )
- print("\n转换完成: [ " + newFileName + " ]\n")
- if __name__ == "__main__":
- main()
复制代码 |