之前就写过:
[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()
|