当前位置: 首页 > web >正文

PNG转ico图标(支持圆角矩形/方形+透明背景)Python脚本 - 随笔

摘要

在网站开发或应用程序设计中,常需将高品质PNG图像转换为ICO格式图标。本文提供一份基于Pillow库实现的,能够完美保留透明背景且支持导出圆角矩形/方形图标的格式转换脚本。

源码示例

圆角方形

from PIL import Image, ImageDraw, ImageOpsdef create_rounded_png(image_path, output_path, size, corner_radius):"""将指定的图片文件转换为n*n的圆角PNG图片。:param image_path: 输入图片文件的路径:param output_path: 输出PNG文件的路径:param size: 图标的大小,n*n:param corner_radius: 圆角的半径"""with Image.open(image_path) as img:# 调整图片大小到n*nresized_img = img.resize((size, size), Image.ANTIALIAS)# 创建一个与原图大小相同的透明背景图片用于绘制圆角蒙版mask = Image.new('L', (size, size), 0)draw = ImageDraw.Draw(mask)# 绘制圆角矩形蒙版draw.rounded_rectangle([(0, 0), (size - 1, size - 1)], corner_radius, fill=255)# 应用圆角蒙版到原图上rounded_img = ImageOps.fit(resized_img, mask.size, centering=(0.5, 0.5))rounded_img.putalpha(mask)# 保存为PNG文件rounded_img.save(output_path)# 示例用法
create_rounded_png('path/to/your/PNG_img.png', 'path/to/your/ico_file.ico', 512, 69)

任意 宽×高 圆角矩形

from PIL import Image, ImageDraw, ImageOpsdef create_rounded_icon(image_path, output_path, size, corner_radius):"""将指定的图片文件转换为指定尺寸的圆角矩形ICO图标。:param image_path: 输入图片文件的路径:param output_path: 输出ICO文件的路径:param size: 图标的大小,格式为(width, height):param corner_radius: 圆角的半径"""with Image.open(image_path) as img:# 调整图片大小到指定尺寸resized_img = img.resize(size, Image.ANTIALIAS)# 创建一个与原图大小相同的透明背景图片用于绘制圆角蒙版mask = Image.new('L', size, 0)draw = ImageDraw.Draw(mask)# 绘制圆角矩形蒙版draw.rounded_rectangle([(0, 0), (size[0] - 1, size[1] - 1)], corner_radius, fill=255)# 应用圆角蒙版到原图上rounded_img = ImageOps.fit(resized_img, mask.size, centering=(0.5, 0.5))rounded_img.putalpha(mask)# 保存为ICO文件rounded_img.save(output_path, format='ICO')# 示例用法
create_rounded_icon('path/to/your/PNG_img.png', 'path/to/your/rounded_icon.ico', (512, 256), 69)

实际操作中可根据自己的需求调整size, corner_radius等参数,改变图标和蒙版的形状和位置等。

http://www.xdnf.cn/news/5940.html

相关文章:

  • Java处理压缩文件的两种方式!!!!
  • python通过curl访问deepseek的API调用案例
  • 该如何备考社工考试?
  • 2025年中期大语言模型实力深度剖析
  • Windows系统配置WSL2及Cuda
  • 【实战】基于 ABP vNext 构建高可用 S7 协议采集平台(西门子 PLC 通信全流程)
  • 【Python生活】如何构建一个跌倒检测的算法?
  • 快速排序、归并排序、计数排序
  • 2025.5.13总结
  • 使用bitNet架构
  • GBK与UTF-8编码问题(2)
  • 数据结构—(链表,栈,队列,树)
  • 腾讯优化DeepSeek的DeepEP通信框架:开启AI大模型训练新时代
  • 股指期货是什么?有啥特点?怎么用?
  • 鸿蒙 Core File Kit(文件基础服务)之简单使用文件
  • 常时间运行的程序 导致系统卡顿 自动监控系统CPU和内存利用率 自动选择 内存回收 软件重启 电脑重启
  • 养生:拥抱健康生活的有效之道
  • eward hacking 问题 强化学习钻空子
  • MQTT协议技术详解:深入理解物联网通信基础
  • 项目管理系统供应链:打造高效运营“强引擎”
  • vsomeip环境搭建保姆级教程
  • Python训练打卡Day23
  • Java jar包程序 启动停止脚本 shell bash
  • 数据分析预备篇---Pandas的Series
  • Easysearch 时序数据的基于时间范围的合并策略
  • 软考软件测评师——计算机网络
  • MySQL历史版本下载及安装配置教程
  • GPT 经验
  • javax.servlet.Filter 介绍-笔记
  • 数字经济发展对“一带一路”地区农产品贸易效率的影响:基于空间溢出效应的视角