图片转图标 Img2Ico(简称I2I)

[复制链接]
113 |10
发表于 昨天 22:50 | 显示全部楼层 |阅读模式
最近由于工作需要,经常需要图标。以前一直用的图片在线转换,偶尔也用iconworkshop,但嫌它太麻烦了。于是它就诞生啦!
Img2Ico
需要.net 8.0运行库,没有时会弹出下载

功能(优点):
    批量转换图片->图标;支持多尺寸;支持提取程序/DLL中的图标文件;支持圆角;(beta)支持简单裁剪;不到200Kb


缺点(暂时自己发现的BUG)
    需要运行库圆角功能好像周边会有淡淡的边框(如图,不知道是不是我系统问题,欢迎反馈)



下一步准备:
    有时间的话,使用.net 4.8重新写想办法完善圆角支持导出为DLL,那样就可以把ICO做成合集了




由于体积比较小就直接放附件了:

I2I.zip(157.7 KB, 下载次数: 1091)2025-7-3 11:47 上传
点击文件名下载附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

发表于 昨天 22:51 | 显示全部楼层
之前就写过:
[Python]  
  1. from PIL import Image
  2. import os, sys, time
  3. # pyinstaller.exe -F -w ./image2ico.py -i ./image2ico.ico"
  4. sizes = [(32, 32), (64, 64), (128, 128), (256, 256)]
  5. def main():
  6.     sizeStr = "    输出文件包含 "
  7.     for size in sizes:
  8.         sizeStr += f"{size[0]}x{size[1]} "
  9.     sizeStr += "分辨率。"
  10.     print("\n|===  常用图像格式转换到ICO图标文件 V1.1 By JARK006  ====|\n")
  11.     print("    当图片宽高不一致时,将居中切割为正方形。")
  12.     print(sizeStr)
  13.     print("\n|========================================================|\n")
  14.     if len(sys.argv) == 2 and os.path.exists(sys.argv[1]):
  15.         filePath = sys.argv[1]
  16.     else:
  17.         filePath = input("请输入文件路径,或者把图片拖进来回车:")
  18.         filePath = filePath.replace('"', "").replace("'", "")
  19.     if not os.path.exists(filePath):
  20.         print("文件路径错误!!!")
  21.         time.sleep(3)
  22.         exit(-1)
  23.     try:
  24.         image = Image.open(filePath)
  25.     except:
  26.         print("文件格式不支持!!!")
  27.         print("请输入正确的图像文件,或者受支持的图像格式。")
  28.         time.sleep(3)
  29.         exit(-1)
  30.     if image.size[0] != image.size[1]:
  31.         offset = abs(image.size[0] - image.size[1]) / 2
  32.         # 居中切割正方形
  33.         if image.size[0] > image.size[1]:
  34.             image = image.crop((offset, 0, offset + image.size[1], image.size[1]))
  35.         else:
  36.             image = image.crop((0, offset, image.size[0], offset + image.size[0]))
  37.     fileName, fileExt = os.path.splitext(filePath)
  38.     newFileName = fileName + ".ico"
  39.     image.resize((256, 256)).save(
  40.         newFileName, format="ICO", sizes=sizes
  41.     )
  42.     print("\n转换完成: [ " + newFileName + " ]\n")
  43. if __name__ == "__main__":
  44.     main()
复制代码
回复

使用道具 举报

发表于 昨天 22:51 | 显示全部楼层
感谢分享,收藏备用
回复

使用道具 举报

发表于 昨天 22:52 | 显示全部楼层
能批量导出各种大小的图标吗?
回复

使用道具 举报

发表于 昨天 22:52 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 昨天 22:53 | 显示全部楼层
,谢谢分享,备份试用。
回复

使用道具 举报

发表于 昨天 22:53 | 显示全部楼层
好东西,果断拿下
回复

使用道具 举报

发表于 昨天 22:54 | 显示全部楼层
简单易用
拿走感谢
回复

使用道具 举报

发表于 昨天 22:54 | 显示全部楼层
收藏一下,谢谢分享
回复

使用道具 举报

发表于 昨天 22:55 | 显示全部楼层
拿走了,谢谢楼主。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

72小时热榜
热门版块
热门帖子
1
图片音频视频整理工具
骑着悟空看八戒
2025-12-16
3
冒险常见错误
Josephhob
2025-12-16
4
Hallo, write about your price
GeorgeScozy
2025-12-16
6
图片转图标 Img2Ico(简称I2I)
骑着悟空看八戒
2025-12-15
快速回复 返回顶部 返回列表