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

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等参数,改变图标和蒙版的形状和位置等。

相关文章:

  • STM32F103C8T6板子使用说明
  • Android架构 之 自定义native进程
  • loki grafana 页面查看 loki 日志偶发 too many outstanding requests
  • C语言之旅5---分支与循环【2】
  • 数睿通2.0数据中台,已购买源代码
  • 【docker】--镜像管理
  • 关于cleanRL Q-learning
  • ElasticSearch深入解析(十一):分页和分批统计的三种实现
  • 英语学习5.13
  • Lin4neuro 系统详解
  • FHQ平衡树
  • 什么是Git?
  • 计算机组成与体系结构:组相联映射(Set-Associative Mapping)
  • NY164NY165美光固态闪存NY166NY172
  • 学习日志05 java
  • MySQL数据库——视图
  • 前端流行框架Vue3教程:15. 组件事件
  • Python+Streamlit实现登录页
  • 本地部署ollama及deepseek(linux版)
  • 力扣刷题Day 48:盛最多水的容器(283)
  • 美国调整对华加征关税
  • 郑州通报涉“健康证”办理有关问题查处进展情况
  • 《致1999年的自己》:千禧之年的你在哪里?
  • 前四月全国铁路完成固定资产投资1947亿元,同比增长5.3%
  • 苏东坡:人生就是哈哈哈哈哈
  • 临港新片区:发布再保险、国际航运、生物医药3个领域数据出境操作指引